Benutzerdefinierte numerische Formate in VBA (Benutzerdefinierte numerische Formate in VBA), Lektion, Seite 720877
https://www.purl.org/stefan_ram/pub/benutzerdefinierte_vba (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
VBA-Kurs

Benutzerdefinierte numerische Formate in VBA

Zahlenformatierung in VBA

VBA  stellt nichtnegativen Zahlen bei der Ausgabe ein Leerzeichen voran und negativen Zahlen ein Minuszeichen.

Direktbereich
? 2 : ? 0 : ? -2 
2  
0  
-2

Außerdem folgt Zahlen ein Leerzeichen, daher befinden sich in der folgenden Ausgabe zwei  Leerzeichen zwischen den beiden Zweien.

Direktbereich
? 2; : ? 2 : ? 1234 
2 2  
1234

Die ausdrückliche Wandlung einer Zahl in einen Text mit der Standardfunktion "Str$" verhält sich genau so, abgesehen davon, daß sie der Zahl kein Leerzeichen nachstellt.

Direktbereich
? Str$( 2 ); : ? Str$( 2 ) : ? Str$( -2 ) 
2 2 
-2

Die ausdrückliche Wandlung einer Zahl in einen Text mit der Standardfunktion "Format" stellt positiven Zahlen ein Leerzeichen weder voran noch nach.

Direktbereich
? VBA.Strings.Format$( 2 ); : ? VBA.Strings.Format$( 2 ) : ? VBA.Strings.Format$( -2 ) 
22 
-2

Außerdem beachtet die Funktion "Format", wie auch die direkte Zahlenausgabe, das Gebietsschema. So werden beispielsweise Kommas als Dezimaltrennzeichen verwendet, wenn das in der Umgebung so konfiguriert wurde. Nur die klassische BASIC -Funktion "Str$" verwendet immer einen Dezimalpunkt.

⚠ Die Ausgabe des folgenden Beispiels sieht man so nur dann, wenn das Zahlenformat des Betriebssystems entsprechend eingestellt wurde.

Direktbereich
? 2.1 : ? Str$( 3.1 ) : ? VBA.Strings.Format$( 4.1 ) 
2,1  
3.1 
4,1

Die Funktion "Format" hat ein optionales Argument, das es erlaubt, ein Formatierungsmuster anzugeben. Der Punkt "." kennzeichnet darin die Stelle des Dezimaltrennzeichens.

Direktbereich
? VBA.Strings.Format$( 5459.4, "##,##0.00" ) 
5.459,40
? VBA.Strings.Format$( Expression := 5459.4, Format := "##,##0.00" ) 
5.459,40

Wenn die Zahl für das vorgegebene Format zu groß ist, wird sie trotzdem angezeigt.

Direktbereich
? VBA.Strings.Format$( 5459.4, "##.0" ) : ? VBA.Strings.Format$( 5459.4, "00.0" ) 
5459,4 
5459,4

Bei nicht mehr darstellbaren Nachkommastellen wird gerundet.

Direktbereich
? VBA.Strings.Format$( 2.454, "##.00" ) 
2,45
? VBA.Strings.Format$( 2.455, "##.00" ) 
2,46
? VBA.Strings.Format$( 2.456, "##.00" ) 
2,46

Das Zeichen "#" und das Zeichen "0" können für eine Ziffer stehen. Allerdings werden Anfangsnullen oder Endnullen nur bei Verwendung des Zeichens "0" geschrieben.

Direktbereich
? VBA.Strings.Format$( 59.4, "##,###.####" ) 
59,4
? VBA.Strings.Format$( 59.4, "00,000.0000" ) 
00.059,4000
? VBA.Strings.Format$( 0.5, "#.#" ) 
,5
? VBA.Strings.Format$( 0.5, "0.#" ) 
0,5

Die Verwendung des Kommas "," bestimmt, daß ein Tausendertrennzeichen ausgegeben wird.

Direktbereich
? VBA.Strings.Format$( 123456, "##,###.0##" ) 
123.456,0

Dabei ist es egal, wo das Komma steht.

Direktbereich
? VBA.Strings.Format$( 123456, "####,#.0##" ) 
123.456,0

Das Komma wird aber nach dem Punkt ignoriert.

Direktbereich
? VBA.Strings.Format$( 123456, "#####.0#,#" ) 
123456,0

Es können vor dem Punkt auch mehrere Kommas stehen. Die Wirkung ist die gleiche wie bei der Verwendung eines einzelnen Kommas, solange das Komma nicht direkt vor dem Punkt steht,

Direktbereich
? VBA.Strings.Format$( 123456, "###,,##.0##" ) 
123.456,0

Wenn das Komma direkt vor dem Punkt geschrieben wird, dann wird der Zahlenwert durch 1000 geteilt (Angabe in Promille).

Direktbereich
? VBA.Strings.Format$( 123456, "#####,.0##" ) 
123,456

Werden direkt vor dem Punkt mehrere Kommas verwendet, so wird der Wert so oft durch 1000 geteilt, wie direkt vor dem Punkt stehende Kommas vorhanden sind.

Direktbereich
? VBA.Strings.Format$( 123456, "#####,,.0##" ) 
,123
? VBA.Strings.Format$( 123456, "#####,,,.0######" ) 
,0001235

Ein weiteres Tausendertrennzeichen, das nicht direkt vor dem Dezimaltrennzeichen steht, kann wieder bestimmen, ob ein Tausendertrennzeichen ausgegeben wird.

Direktbereich
? VBA.Strings.Format$( 1234567890124, "#####,,.0##" ) 
1234567,89
? VBA.Strings.Format$( 1234567890124, "####,#,,.0##" ) 
1.234.567,89

Zeichen, die für die Formatierung keine besondere Bedeutung haben, werden so ausgegeben, wie sie im zweiten Argument vorkommen.

Direktbereich
? VBA.Strings.Format$( 2.33, "A = ###.###") 
A = 2,33

Es ist aber bekanntlich auch ohne Zeichen im Formatierungstext möglich, Text vor einer Zahl auszugeben.

Direktbereich
? "A = "; :? VBA.Strings.Format$( 2.33, "###.###") 
A = 2,33

Zeichen, die nach einem inversen Schrägstrich stehen, werden immer uninterpretiert ausgegeben. Da verschiedene Zeichen eine besondere Bedeutung haben, die hier noch nicht erwähnt wurde, ist es sicher, wörtlich auszugebenden Zeichen immer einen Rückstrich voranzustellen.

Direktbereich
? VBA.Strings.Format$( 2.33, "\A\B\C\ \=\ \\\###.###") 
ABC = \#2,33

Um ein Feld einer bestimmten Größe aufzufüllen, kann der Text, den die Funktion "Format" ergibt, erneut formatiert werden. Bei Verwendung des Platzhalters "@" wird das damit dargestellte Feld rechtsbündig gefüllt, so daß es damit möglich wird, Zahlen rechtsbündig in einem Feld einer bestimmten Breite so untereinander zu schreiben, daß die Dezimaltrennzeichen untereinander stehen, wenn dafür gesorgt wird, daß alle Zahlen gleich viele Nachkommastellen haben.

Direktbereich
? VBA.Strings.Format$( VBA.Strings.Format$( 2.34, "0.00" ), "@@@@@@@@@@" ) 
2,34
? VBA.Strings.Format$( VBA.Strings.Format$( 212.33424, "0.00" ), "@@@@@@@@@@" ) 
212,33

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram720877 stefan_ram:720877 Benutzerdefinierte numerische Formate in VBA Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd720877, slrprddef720877, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/benutzerdefinierte_vba