26. juli 2016 - 08:02
Der er
2 kommentarer og
1 løsning
Userform textbox kan ikke vise/læse korrekt fra comma separated decimal tal
Har lavet en Userform som skal vise resultaterne fra nogle celler. Brugeren klikker på en knap og der zoomes ud. Problemet er, at VBA tilsyneladende kun kan genkende . som komma ved decimaler.
Her er lidt kode, hvor jeg har prøvet at få det til at virke:
Private Sub UserForm_Initialize()
Dim ws As Worksheet
Dim aNumber As Double
Set ws = Worksheets("Input")
Application.DecimalSeparator = ","
Application.ThousandsSeparator = "."
TextBox1.Value = ws.Range("B20")
TextBox2.Value = ws.Range("B21")
TextBox3.Value = ws.Range("B24")
TextBox4.Value = ws.Range("B26")
TextBox5.Value = ws.Range("B28").Value
TextBox7.Value = ws.Range("B29")
TextBox1.Text = Format(TextBox1.Text, "#.###,0#")
TextBox3.Text = Format(TextBox3.Text, "#.##0,00")
TextBox4.Text = CDbl(TextBox4.Text)
TextBox5.Text = Format(TextBox5, "percent")
TextBox7.Text = Format(TextBox7, "#,###.00")
'Me.TextBox4.Value = Replace(Me.TextBox4.Value, ".", ",", 1, -1, vbTextCompare)
Me.TextBox7.Value = Replace(Me.TextBox7.Value, ".", "", 1, -1, vbTextCompare)
Me.TextBox7.Value = Replace(Me.TextBox7.Value, ",", ".", 1, -1, vbTextCompare)
Helt galt går det ved procent tallene jf. celle B28 og B29
"0.00%" virker heller ikke! Jeg har også søgt efter default indstillinger i VBA for at se om man kan ændre her til comma decimaler og thousands separators som punktummer. Har brugt timer, men uden held.
Jeg vil være meget taknemmelig for en løsning på problemet!
PS: Ignorer venligst alle backslash tegn disse er ikke i min kode men er åbenbart indsat her automatisk!
Mvh Lars Gl
Slettet bruger
26. juli 2016 - 09:38
#1
Jeg kan ikke rigtig se, hvad det er du vil, men så vidt jeg kan se, har du blandet lidt dine formatering
den viser en "pænt" tal når jeg bruger Format(TextBox7, "#,###0.00%")
Samt Format(TextBox3, "#,##0.00") og Format(TextBox1, "#,###.0#")
så viser den komma som dezimalseperator, og punkt for hver tusind.
Har jeg helt misforståed det, eller...?
Synes godt om
1 synes godt om dette
Formatering af tal i en TEKST-boks kan være problematisk
Som det ses skal placering af komma og punktum være modsat
af det man egentlig forventer som resultat
eks. [B2] = 1.234,56
Her anvendes følgende format for at få det ønskede resultat i TextBoxen :
Me.TextBox1 = Format([B2], "#,###.##") som givere : 1.234,56 i TextBoxen
Som det ses anvendes komma som tusindtals separator og punktum som
decimal separator i Format-strengen, men vi får alligevel det rette format.
Som det fremgår af følgende eks. skal man desuden tage stilling til om der skal
anvendes # eller 0 i format-strengen.
Dette har betydning hvis man fx ønsker foranstillede nuller, eller decimaler
med 2 cifre som i eks. [B7] hvor vi har værdien 0,5 og ønsker den vist som 0,50
i TextBoxen, så anvendes formatet : "#,##0.00"
Mem husk det er stadig tekst selv om det er tal der vises, så hvis de skal skrives
tilbage til arket, så skal de konverteres til tal med fx CDec(TextBox1)
FORMAT EKS.:
Private Sub UserForm_Initialize()
'[B2] = 1.234,56
'Me.TextBox1 = [B2] 'vises som : 1234.56
'Me.TextBox1 = Format([B2], "#,###.##") 'vises som : 1.234,56
'Me.TextBox1 = Format([B2], "0,000.00") 'vises som : 1.234,56
'-------------------------------------------------------------
'[B3] = 234,56
'Me.TextBox1 = [B3] 'vises som : 234.56
'Me.TextBox1 = Format([B3], "#,###.##") 'vises som : 234,56
'Me.TextBox1 = Format([B3], "0,000.00") 'vises som : 0.234,56
'-------------------------------------------------------------
'[B4] = 34,56
'Me.TextBox1 = [B4] 'vises som : 34.56
'Me.TextBox1 = Format([B4], "#,###.##") 'vises som : 34,56
'Me.TextBox1 = Format([B4], "0,000.00") 'vises som : 0.034,56
'-------------------------------------------------------------
'[B5] = 4,56
'Me.TextBox1 = [B5] 'vises som : 4.56
'Me.TextBox1 = Format([B5], "#,###.##") 'vises som : 4,56
'Me.TextBox1 = Format([B5], "0,000.00") 'vises som : 0.004,56
'-------------------------------------------------------------
'[B6] = 0,56
'Me.TextBox1 = [B6] 'vises som : 0.56
'Me.TextBox1 = Format([B6], "#,###.##") 'vises som : ,56
'Me.TextBox1 = Format([B6], "#,##0.##") 'vises som : 0,56
'Me.TextBox1 = Format([B6], "0,000.00") 'vises som : 0.000,56
'-------------------------------------------------------------
'[B7] = 0,5
'Me.TextBox1 = [B7] 'vises som : 0.5
'Me.TextBox1 = Format([B7], "#,###.##") 'vises som : ,5
'Me.TextBox1 = Format([B7], "#,##0.##") 'vises som : 0,5
'Me.TextBox1 = Format([B7], "#,##0.00") 'vises som : 0,50
'Me.TextBox1 = Format([B7], "0,000.00") 'vises som : 0.000,50
End Sub
Synes godt om
1 synes godt om dette
Tak for svarene både til Thomas S og excelent
Jeg har fx tallet 50.554,54 i ws [B26]
TextBox4.Value = ws.Range("B26") * 1
Me.TextBox4.Text = Format(TextBox4.Text, "#,##0.00")
Giver resultatet i textboxen: 5.055.454,00 ??
Altså er komma separationen sat to pladser forkert til højre
Men fejlen er jo min reference efter Format som skal være cellen! Som excelent angiver!!!
Me.TextBox4.Text = Format(ws.Range("B26"), "#,##0.00")
Og procent tallet:
Me.TextBox5.Text = Format(ws.Range("B28"), "0.00%")
Virker! Great
Tusinde tak for hjælpen jeg kan nu komme videre i teksten!!