• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

percentage wordt afgerond bij schrijven van userform naar cel

Status
Niet open voor verdere reacties.

Rens80

Gebruiker
Lid geworden
2 apr 2020
Berichten
46
Hoi,

Ik heb een userform gemaakt om gegevens in te voeren in een bepaald bereik. een aantal textboxen zijn opgemaakt als percentage. Als ik nu de macro laat lopen om het percentage naar de cellen te schrijven wordt het percentage afgerond op een heel %. wel met twee nullen achter de komma.

Ik gebruik de volgende codes:

Om het percentage na invullen in % weer te geven:
Code:
Private Sub TextBox69_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
TextBox69.Value = Format(Val(TextBox69.Value) / 100, "#0.0%")
End Sub

Om het percentage naar een cel te schrijven:
Code:
ActiveSheet.Range("bz38") = CDbl(Format(TextBox58.Value, "0.00"))

Als ik 12,5% invoer geeft hij 12,0%. Dat is wel opgelost als ik 12.5% ingeef.
Echter bij het schrijven naar de cel komt er dan 13,0% te staan.

Weet iemand misschien wat er fout gaat?

Alvast dank voor de hulp

gr
 
Ik heb deze code:

Code:
Private Sub TextBox69_AfterUpdate()
On Error Resume Next
TextBox69.Value = TextBox69.Value & "%"
If TextBox69.Value = "%" Then
MsgBox ("U moet een BTW percentage invullen")
TextBox69.SetFocus
Exit Sub
End If
End Sub

En bij het inlezen later:

Code:
Private Sub Listbox1.Click()
If TextBox69.Value >= 0 Then
TextBox69.Value = TextBox69.Value * 100 & "%"
End If
End Sub

Voor het wegschrijven hoef je geen code toe te voegen...De format van de cel past zichzelf aan.

En dit werkt foutloos...Bij mij althans.
 
Laatst bewerkt:
Dit komt doordat VBA Amerikaans spreekt. De conversies die jij doet geven dan een probleem.
Waarschijnlijk werkt dit gewoon:
Code:
ActiveSheet.Range("bz38") = TextBox58.Value
 
De methode 'Val' herkent alleen een punt als geldig decimaalteken.

Zo kun je met een komma werken indien nodig.
Code:
 TextBox69.Value = Format(TextBox69.Value / 100, "percent")
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan