26. juli 2016 - 08:02Der 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")
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!
Fibias ambitiøse vækststrategi satte nye krav til deres IT-arkitektur, som skulle være i stand til at håndtere den øgede trafikmængde.
8. august 2023
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...?
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
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!!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.