Mit VBA Zahlenformat in Textbox darstellen

Hallo,

ich trage in einem Label das Ergebnis einer Rechnung ein, welches 2 Stellen nach dem Komma (oder Punkt) anzeigen soll. Ich habe zwar eine Lösung gefunden, die funktioniert, habe aber nicht verstanden, was dieser Code bedeutet:

AS1 = Format((Fre / Sum) * 100, „##.00“)
.Label15.Caption = AS1

Fre/Sum*100 hat z.B. das Ergebnis 1,2345 oder auch 12,3456. Mit obigem Code wird das korrekt als 1,23 oder 12,35 angezeigt. Ich habe es mit „##.##“ oder mit „00.00“ oder mit „#.##0.00“ (wie ich es in der VBA Hilfe fand) versucht, was aber falsche Ergebnisse lieferte. Warum ist „##.00“ richtig?

Gruß
Pauli

Hi,

es sieht so aus, als würdest Du nicht zwischen Tausender-Trenner und Dezimaltrenner unterscheiden. Eine von beiden sollte gehen:

. ##0 , 00

oder

, ##0 . 00

(wobei in meinem antiken Word/Excel letztere Version funktioniert).

HTH.

Markus

Vba Zahlenformat in Label bzw. Bezeichnung
Hallo Pauli,

AS1 = Format((Fre / Sum) * 100, „##.00“)
.Label15.Caption = AS1

.Label15.Caption = Format((Fre / Sum) * 100, „##.00“)

Fre/Sum*100 hat z.B. das Ergebnis 1,2345 oder auch 12,3456.
Mit obigem Code wird das korrekt als 1,23 oder 12,35
angezeigt. Ich habe es mit „##.##“ oder mit „00.00“ oder mit
„#.##0.00“ (wie ich es in der VBA Hilfe fand) versucht, was
aber falsche Ergebnisse lieferte. Warum ist „##.00“ richtig?

Ich kann nicht nachvollziehen was an „##.##“ oder „00.00“
„falsch“ sein soll.
Bei diesem Code steht hinter der Codezeile wie das Ergebnis aussieht

Private Sub UserForm\_Activate()
Const Zahl As Single = 1.23456789
Label1 = Format(Zahl, "##.00") ' 1,23
Label2 = Format(Zahl, "##.##") ' 1,23
Label3 = Format(Zahl, "00.##") ' 01,23
Label4 = Format(Zahl, "#.##0.00") ' 1,234.57
End Sub

Schau mal in der Hilfe ob du so eine Seite findest wie hier in der
XL 2000 Hilfe:
http://www.pic-upload.de/view-19535480/kwPauli-0.jpg…

Gruß
Reinhard

. ##0 , 00

oder

, ##0 . 00

(wobei in meinem antiken Word/Excel letztere Version
funktioniert).

Hallo Markus,

scheinbar unterscheiden sich die Versionen in dem Punkt (zum großen
Glück) nicht.
Voriger Code war in XL 2000, dieser ist in XL 2007 getestet.

Achja, in XL 2007 (2003 weiß ich nicht) kann man mit
Decimalseparator= das Dezimaltrennzeichen usw. festlegen.
Nachstehend dazu auch ein Code aus der Hilfe.

Gruß
Reinhard

Private Sub UserForm\_Activate()
Const Zahl As Single = 1.23456789
Label1 = Format(Zahl, "##.00") ' 1,23
Label2 = Format(Zahl, "##.##") ' 1,23
Label3 = Format(Zahl, "00.##") ' 01,23
Label4 = Format(Zahl, "#.##0.00") ' 1,234.57
Label5 = Format(Zahl, "#,##0.00") ' 1,23
Label6 = Format(Zahl, "#.##0,00") ' 1,23457
End Sub

Sub ChangeSystemSeparators()
 Range("A1").Formula = "1,234,567.89"
 MsgBox "The system separators will now change."

 ' Define separators and apply.
 Application.DecimalSeparator = "-"
 Application.ThousandsSeparator = "-"
 Application.UseSystemSeparators = False
End Sub

Hallo,

danke für eure Antworten. Ich vergaß zu schreiben, daß ich das Makro mit Excel 2000 schrieb.
Offenbar habe ich den Unterschied zwischen Komma und Punkt ignoriert und daher Müll erhalten. Die derzeitige Lösung ist noch eleganter, da ich ja eigentlich % rechne, daher auch der Faktor *100, auf den ich jetzt verzichten kann.

Mit .Label14.Caption = Format((Ein / Sum), „0.00%“) klappt alles prima.
Diese Formel läuft unter Excel 2010 ebenso.

Gruß
Pauli