VBA – Int / Ganzzahl-Datentyp (Dim Variable)
In this Article
Ganzzahl-Variablentyp (Int)
Der VBA-Datentyp Int wird zum Speichern ganzer Zahlen (ohne Dezimalwerte) verwendet. Wie wir jedoch weiter unten sehen werden, müssen die Integer-Werte in den Bereich -32768 bis 32768 fallen.
Um eine Int-Variable zu deklarieren, verwenden Sie die Dim-Anweisung (kurz für Dimension):
Dim intA as Integer
Um dann einer Variablen einen Wert zuzuweisen, verwenden Sie einfach das Gleichheitszeichen:
intA = 30000
Wenn Sie dies in eine Prozedur einbauen, sieht es so aus:
Sub IntBeispiel()
'Integer-Variable deklarieren
Dim intA as Integer
'Integer-Variable mit Wert belegen
intA = 30000
'Meldungsbox anzeigen
MsgBox intA
End Sub
Wenn Sie den obigen Code ausführen, wird das folgende Meldungsfenster angezeigt.
Der Variablentyp Long
Wie bereits erwähnt, können Int-Variablen nur Werte zwischen -32768 und 32768 speichern. Wenn Sie versuchen, einer Int-Variablen einen Wert außerhalb dieses Bereichs zuzuweisen, erhalten Sie eine Fehlermeldung:
Wenn Sie auf „Debuggen“ klicken, bricht der Code an der Zeile „Integer-Variable mit Wert belegen“ ab, da eine Integer-Variable keine Zahl mit einem Wert von 50000 speichern kann.
Stattdessen können Sie eine Variable mit dem Datentyp Long deklarieren:
Dim longA as Long
Long-Variablen können sehr lange Datentypen speichern (-2.147.483.648 bis 2.147.483.648).
Warum sollten Sie Int-Variablen anstelle von Long-Variablen verwenden?
Long-Variablen benötigen mehr Speicherplatz. Vor Jahren war der Speicherbedarf ein großes Problem beim Schreiben von Code. Heute ist die Computertechnologie jedoch viel besser und es ist zweifelhaft, dass Sie beim Schreiben von VBA-Code auf Speicherprobleme stoßen werden, die durch lange Variablen verursacht werden.
Wir empfehlen, immer Long-Variablen anstelle von Int-Variablen zu verwenden. Im weiteren Verlauf dieses Tutorials werden wir uns mit Int-Variablen beschäftigen, aber denken Sie daran, dass Sie stattdessen auch den Variablentyp Long verwenden können.
Dezimalwerte und Integer-Datentypen
Integer-Variablen können keine Dezimalwerte speichern. Wenn Sie eine Dezimalzahl an eine Ganzzahl übergeben, wird diese gerundet, um die Dezimalstellen zu entfernen.
Wenn Sie also die folgende Prozedur ausführen:
Sub Int_Beispiel_B()
'Integer-Variable deklarieren
Dim intA as Integer
'Integer-Variable mit Wert belegen
intA = 3524.12
'Meldungsbox anzeigen
MsgBox intA
End Sub
werden Sie das folgende Ergebnis erhalten (Abrundung):
Aber dieser Code unten:
Sub IntBeispielB()
'Integer-Variable deklarieren
Dim intA as Integer
'Integer-Variable mit Wert belegen
intA = 3524.52
'Meldungsbox anzeigen
MsgBox intA
End Sub
Würde das folgende Meldungsfeld zurückgeben (Aufrundung):
Dezimal- bzw. Double-Datentyp
Wenn Sie eine Dezimalstelle speichern möchten, müssen Sie eine Variable deklarieren, die Dezimalstellen zulässt. Es gibt 3 Datentypen, die Sie verwenden können, und zwar Single, Double oder Currency.
Dim sngPreis as Single
Dim dblPreis as Double
Dim curPreis as Currency
Der Datentyp Single rundet den Dezimalpunkt etwas anders als die Datentypen Double und Currency, daher ist es aus Genauigkeitsgründen besser, Double anstelle von Single zu verwenden. Ein Double kann bis zu 12 Dezimalstellen haben, während Currency und Single beide bis zu 4 Dezimalstellen haben können.
Für weitere Informationen über diese Datentypen können Sie hier nachsehen.
Integer-Variablen auf Modul- oder globaler Ebene deklarieren
In den vorherigen Beispielen haben wir die Integer-Variable innerhalb einer Prozedur deklariert. Variablen, die mit einer Prozedur deklariert werden, können nur innerhalb dieser Prozedur verwendet werden.
Stattdessen können Sie Integer-Variablen auf Modul- oder globaler Ebene deklarieren.
Modulebene
Variablen auf Modulebene werden am Anfang von Codemodulen mit der Dim-Anweisung deklariert.
Diese Variablen können in jeder Prozedur in diesem Codemodul verwendet werden.
Globale Ebene
Variablen auf globaler Ebene werden ebenfalls am Anfang von Codemodulen deklariert. Anstelle der Dim-Anweisung verwenden Sie jedoch die Public-Anweisung, um anzugeben, dass die Integer-Variable in Ihrem gesamten VBA-Projekt verwendet werden kann.
Public IntA as Integer
Wenn Sie die Ganzzahl auf Modulebene deklarieren und dann versuchen, sie in einem anderen Modul zu verwenden, tritt ein Fehler auf.
Hätten Sie jedoch das Public-Schlüsselwort zur Deklaration der Ganzzahl verwendet, würde der Fehler nicht auftreten und die Prozedur würde einwandfrei ausgeführt werden.
String in Integer konvertieren
Es kann vorkommen, dass Sie eine Zahl, die als String gespeichert ist, in einen Integer-Wert umwandeln müssen.
Im Direktfenster sehen Sie, dass der Integer-Wert rechtsbündig ausgerichtet ist und eine Zahl darstellt, während der String-Wert linksbündig ausgerichtet ist und einen Text darstellt.
Integer in String umwandeln
Umgekehrt können Sie einen Integer-Wert in eine Zeichenkette umwandeln.
Weitere Informationen über diese Datentypen finden Sie hier.
Als String gespeicherte Integer formatieren
Um als String gespeicherte Integer zu formatieren, verwenden Sie die Funktion Format.