Userform Zahlenformat
Hallo zusammen
ich bräuchte mal wieder Hilfe...
ich hab eine Userform angelegt, in die durch ein Makro Werte aus einer Excel-Tabelle angezeigt werden.
NettingMaske.Beispiel.Value = CDec(Range("M1"))
Funktioniert alles soweit, nur werden Beträge nur mit den Kommastellen angezeigt, die nicht "0" sind, also z.B.
420,00 EUR mit 420
420,10 EUR mit 420,1
429,01 EUR mit 420,01
sieht halt dadurch etwas unübersichtlich und unfreundlich aus.. kann man das irgendwie ändern, dass nach Wunsch immer 1, 2 oder 3 Nachkommastellen angezeigt werden?
Besten Dank und ein schönes Wochenende
Gruß
Andreas
Antwort schreiben
Antwort 1 von Hajo_Zi vom 11.12.2021, 16:54 Options
Hallo Andreas,
falls so wie in der Zelle?
=Range("M1").Text
Gruß Hajo
Antwort 2 von andreas_3 vom 11.12.2021, 16:58 Options
Hallo Hajo,
ja, so hatte ich es ursprünglich, aber (sorry, habe ich nicht erwähnt), die Zahl muß nachher mit dem nächsten Makro wieder zurück in die Excel-Tabelle, eventuell ändert sie der User aber auch ab, und dann funktioniert das irgendwie nicht mit den Kommastellen...
gibt's nich eine andere Idee?
LG
Andreas
Antwort 3 von Hajo_Zi vom 11.12.2021, 17:07 Options
Hallo Andreas,
Dir ist schon klar das eine Textbox Text enthält Du liest eine Zahl aus und schreibst Text zurück.
Da mußt Du beim zurückschreiben eine Umwandlungsfunktion benutzen z.B. CDbl(), falls Du damit rechnen willst.
Gruß hajo
Antwort 4 von Charlotte_S vom 11.12.2021, 17:08 Options
Hallo Andreas,
mit A8 = 420, A9 = 420,1, A10 = 420,01
Sub Test2()
Dim i As Integer
For i = 8 To 10
MsgBox "A" & CStr(i) & " = " & Format(ActiveSheet.Range("A" & CStr(i)), "0.00")
Next i
End Sub
MfG Charlotte
Antwort 5 von Charlotte_S vom 11.12.2021, 17:14 Options
Hallo Andreas,
kleine Erweiterung: nach Rückkonvertierung durch
CDbl(s) lässt sich damit auch problemlos weiterrechnen.
Sub Test3()
Dim i As Integer, s As String
For i = 8 To 10
MsgBox "A" & CStr(i) & " = " & Format(ActiveSheet.Range("A" & CStr(i)), "0.00")
s = Format(ActiveSheet.Range("A" & CStr(i)), "0.00")
ActiveSheet.Range("B" & CStr(i)) = CDbl(s) + 100.9
Next i
End Sub
MfG Charlotte
Antwort 6 von andreas_3 vom 11.12.2021, 17:29 Options
... da muß ich mich mal reinvertiefen....
bin nur leider nächste Woche nicht da, ich werd also "irgendwann" mal drauf zurückkommen müssen.
Aber danke schon mal für die Ansätze und schönes Wochenende
LG
Andreas