VBA Double (Gleitkommazahl) in String konvertieren

In vorangegangenen Beiträgen wurde bereits gezeigt, wie man Integer in einen String umwandeln kann oder ein Datum als Zeichenkette mit VBA ausgeben kann. In diesem Beitrag soll es nun darum gehen Gleitkommazahlen, also Variablen vom Datentyp Double in einen String zu konvertieren.

Konvertierungen zu String immer mit CStr()

Im VBA gibt es die CStr(arg)-Funktion, welche leicht einprägsam ist, wenn man sich dies als Abkürzung für Convert-String merkt. Diese Funktion ist mächtig überladen. Denn als Argumen arg, kann die Funktion ziemlich viele Standard-Datentypen, Integer, Bool, Date und auch Double übernehmen, diese in eine Zeichenkette umwandeln.

Beispiel

Als Beispiel wollen wir hier mal die Eulersche Zahl in einen String umwandeln und in einer MessageBox ausgeben. Der Code sieht dann wie folgt aus:

Sub DoubleToString()
    Dim myDouble As Double
    Dim myString As String
    myDouble = 2.71828182845905
    myString = "Die Eulersche Zahl e=" + CStr(myDouble)
    MsgBox (myString)
End Sub

Führt dieses Makro aus, dann bekommt man die folgende Ausgabe in einer Messagebox:

Screenshot MessageBox mit Ausgabe umgewandelter Gleitkommazahl
Beispiel: Eulersche Zahl (Double) wird als String ausgegeben

Dezimalstellen: Verwendung von Format()-Funktion

An den Beispiel sieht man, dass die volle Länge der Double-Variabel ausgegeben wird. Wenn man Texte verarbeitet ist dies aber meistens nicht gewünscht; hier möchte man eine angemessene Anzahl an Dezimalstellen darstellen, z.B. nur zwei Nachkommastellen.

Eine Alternative Double in String umzuwandeln stellt die Funktion Format(doubleValue, formatStr) dar. Hier kann man über einen Formatierungs-String formatStr definieren, auf wie viele Nachkommastellen die Gleitkommazahl reduziert werden soll. Um die Systematik zu verstehen:

  • „0.00“…..definiert die Formatierung auf 2 Dezimalstellen
  • „0.000“…definiert eine Formatierung auf 3 Nachkommastellen

Bleiben wir bei unserem Beispiel mit der Eulerschen Zahl, dann sieht der VBA-Code wie folgt aus:

Sub DoubleToString()
    Dim myDouble As Double
    Dim myString As String
    myDouble = 2.71828182845905
    myString = "Die Eulersche Zahl e=" + Format(myDouble, "0.00")
    MsgBox (myString)
End Sub

Als Ergebnis wird eine MessageBox mit der folgenden Ausgaben bei Ausführung des Codes angezeigt:

Screenshot Messagebox Double auf 2 Dezimalstellen gerundet
Ausgabe Double mit 2 Nachkommastellen als String

Wie man an dem Beispiel sehr gut sehen kann, ist das gute dabei, dass von der Format-Funktion automatisch das Runden übernommen wird. Man muss also keinen separaten Code zum Runden der Double-Zahl einfügen, außer man benötigt spezielle Rundungsregeln.

Bestseller Nr. 1
Bestseller Nr. 2

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht.