Zahlen formatieren

Liebe ExpertInnen,

wie schafft Ihr es, Zahlen spaltengerecht zu drucken? Wenn ich per FORMAT(zahl, format) formatiere, finde ich keine Möglichkeit, führende Leerstellen zu erzeugen. Entweder bammelt das Komma, oder ich behelfe mir mit führenden Nullen (pfui!), damit das Komma immer in der gleichen Spalte steht.

Natürlich könnte ich das formatierte Ergebnis einer Variablen zuweisen, deren Länge l bestimmen und dann mit (Breite - l) Leerzeichen vorne auffüllen, aber das muss doch einfacher gehen. Wer schubst mich vom Schlauch?

Gruß Ralf

Hi Ralf,

wie schafft Ihr es, Zahlen spaltengerecht zu drucken? Wenn ich
per FORMAT(zahl, format) formatiere, finde ich keine
Möglichkeit, führende Leerstellen zu erzeugen. Entweder
bammelt das Komma, oder ich behelfe mir mit führenden Nullen
(pfui!), damit das Komma immer in der gleichen Spalte steht.

Benutze für den Ausdruck eine nicht-proportionale Schriftart. Dann haben alle Ziffern und Buchstaben dieselbe Breite. Bei Zahlen musst Du noch bestimmen, dass die Daten rechtsbündig formatiert werden. Jedenfalls wenn Du immer mit derselben Anzahl von Nachkommastelllen arbeitest, z.B. bei Währungen.

HTH,

Tim

Moin, Tim,

Bei Zahlen musst Du noch bestimmen, dass die Daten
rechtsbündig formatiert werden.

ich habe mich wohl unklar ausgedrückt: Rechtsbündig will ich meine Zahlen haben, genau dafür finde ich aber kein Sprachelement, oder ich verstehe die VBA-Hilfe nicht. Also doch händisch zusammensetzen?

Gruß Ralf

Moin, Tim,

Bei Zahlen musst Du noch bestimmen, dass die Daten
rechtsbündig formatiert werden.

ich habe mich wohl unklar ausgedrückt: Rechtsbündig will ich
meine Zahlen haben, genau dafür finde ich aber kein
Sprachelement, oder ich verstehe die VBA-Hilfe nicht. Also
doch händisch zusammensetzen?

Hallo Ralf,
was hat denn das nun mit dem Komma zu tun? Tim sagt ja zu Recht, nur mit nichtproportionalen Sschriftarten geht das Platzieren Komma unter Komma.
Jetzt kommst du mit Rechtsbündig…
Ich weiß grad nicht wie ich dir helfen kann.
Gruß
Reinhard

Hi,
wie oder wo versuchst du das denn? Excel, Access, VBS?
Beispiel mit Code um dein Problem zu verstehen würde jetzt mal helfen.

Gruss
Joey

Grüezi Ralf

wie schafft Ihr es, Zahlen spaltengerecht zu drucken? Wenn ich
per FORMAT(zahl, format) formatiere,

Hier formatierst Du nicht, sondern wandelst deine Zahlen in Strings um, die Du dann wohl in die Zellen schreibst.

Natürlich könnte ich das formatierte Ergebnis einer Variablen
zuweisen, deren Länge l bestimmen und dann mit (Breite - l)
Leerzeichen vorne auffüllen, aber das muss doch einfacher
gehen. Wer schubst mich vom Schlauch?

Löse dich von der String-Formatierung und formatiere die Werte in den Zellen direkt übers Zellenformat.
Folgenes schreibt dir als Beispiel ein paar Zahlen von A1:A10 und formatiert diese so, dass 3-stellig angezeigt wird, dabei aber das Komma sauber untereinander steht:

Sub Makro1()
 Range("A1") = 123
 Range("A2") = 123.4
 Range("A3") = 123.45
 Range("A4") = 123.456
 Range("A5") = 123.5
 Range("A6") = 12
 Range("A7") = 123.6
 Range("A8") = 123.456
 Range("A9") = 123.45
 Range("A10") = 123.4
 Range("A1:A10").NumberFormat = "0.???"
End Sub


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Moin, Reinhard,

was hat denn das nun mit dem Komma zu tun?

das Zauberwort heißt drucken…

Zahlen spaltengerecht zu drucken?

…und die Überschrift ist VB, ich denke, VBA wird da nicht weit weg sein.

nur mit nichtproportionalen Sschriftarten

das ist der Urfurz des Druckens.

Jetzt kommst du mit Rechtsbündig…

Ich drucke Zahlen ohne Komma spaltengerecht mit dem Formatangabe „@@@@@@“, dann stehen die Zahlen rechtsbündig:

 4711
 1
 123
100000

So weit, so gut. Mir fehlt eine Formatangabe, die das gleiche für Dezimalzahlen leistet. Die VBA-Hilfe spuckt nur Unbrauchbares aus:

 Benutzerdefinierte Formate
 ZF1 = Format(5459.4, "##,##0.00") ' Liefert "5.459,40".
 ZF2 = Format(334.9, "###0.00") ' Liefert "334,90".

Nun hatte ich mir erhofft, 334.9 formatiert mit „##,##0.00“ (ZF1) liefere „bbb334,90“(b für blank), tut es aber nicht, sondern

 ZF3 = Format(334.9, "#,###0.00") ' Liefert "334,90".

Der Lattenzaun steht also nicht für ein Leerzeichen, sondern für nichts.

Bislang behelfe ich mir, indem ich meinen Wert (für eine Nachkommastelle) mit 10 multipliziere und mit „@@@@@,@“ ausgebe. Sag mir, dass das guter Stil ist, und ich gebe Ruhe :smile:

Gruß Ralf

Hallo Ralf,

die Formatierung mit ‚@‘ war mir neu, die steht auch gar nicht in der Hilfe. :smile:

Die Formatierung des Strings und der Zahl zu mischen ist mir auch nicht gelungen, aber ineinander verschachteln geht.

 Dim a As Long, b As String, c As String
 a = 2345.67
 Label1.Caption = a
 b = Format(a, "####.00")
 Label2.Caption = b
 c = Format(b, "@@@@@@@@@@@@")
 Label3.Caption = c

 Label4.Caption = Format(Format(a, "####.00"), "@@@@@@@@@@@@")

Gruß, Rainer

1 Like

Moin, Rainer,

die Formatierung mit ‚@‘ war mir neu, die steht auch gar nicht
in der Hilfe. :smile:

doch, das Thema ist allerdings dermaßen verstreut, dass ich es fast selbst nicht mehr gefunden hätte. Such mal nach benutzerdefiniert, dort
Benutzerdefinierte Zeichenfolgenformate (Format-Funktion) und
Benutzerdefinierte numerische Formate (Format-Funktion).

Label4.Caption = Format(Format(a, „####.00“), „@@@@@@@@@@@@“)

Genialisch - besternten Dank!

Gruß Ralf

1 Like

Hallo Ralf,

die Formatierung mit ‚@‘ war mir neu, die steht auch gar nicht
in der Hilfe. :smile:

doch, das Thema ist allerdings dermaßen verstreut, dass ich es
fast selbst nicht mehr gefunden hätte. Such mal nach
benutzerdefiniert, dort
Benutzerdefinierte Zeichenfolgenformate
(Format-Funktion)
und
Benutzerdefinierte numerische Formate
(Format-Funktion)
.

hmmm, in der Hilfe zu VB6 (MSDN) habe ich es immer noch nicht gefunden. Das macht aber nichts, ich weiß es ja jetzt und das erleichtert mir auch das Leben! :smile:

Danke!

Gruß, Rainer