🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

VBA Datentypen in Excel — String, Long, Double, Variant (und die richtige Box für jeden Wert)

|

VBA Datentypen in Excel — String, Long, Double, Variant (und die richtige Box für jeden Wert)

TL;DR — Ein Datentyp ist Form und Größe der Box einer Variablen. Wählen Sie eine zu kleine, läuft der Wert über; greifen Sie zur bequemen Allzweck-Box (Variant), zahlen Sie mit Geschwindigkeit und versteckten Bugs. Zwei Regeln decken 90 % des echten Codes ab: Nutzen Sie Long für jede Ganzzahl (Integer läuft bei 32.767 über, und ein Blatt hat 1.048.576 Zeilen), und nutzen Sie Double für Mathematik, Currency oder Rundung für Geld (Double kann 0.1 + 0.2 nicht exakt halten). Alles andere — String, Boolean, Date — wählen Sie passend zum Wert, und Variant behalten Sie für die wenigen Fälle, die es wirklich brauchen.

Dim rowCount As Long      ' Ganzzahlen — IMMER Long, niemals Integer
Dim price    As Double    ' Messwerte & Mathematik
Dim total    As Currency  ' Geld — exakt bis auf 4 Nachkommastellen
Dim name     As String    ' Text
Dim isPaid   As Boolean   ' True / False
Dim dueDate  As Date      ' ein Datum/eine Uhrzeit

Einen Typ zu wählen fühlt sich wie eine Formalität an, ist aber in Wahrheit eine Entscheidung darüber, welchen Fehlermodi Sie sich aussetzen. Der falsche Typ wirft nicht immer einen Fehler — manchmal liefert er still die falsche Zahl. Dieser Leitfaden ist um die Fallen herum aufgebaut, denn genau die entscheiden, welche Box Sie verwenden sollten.

Was Sie lernen

  • Warum Integer eine Falle ist und Long Ihr Standard für Ganzzahlen sein sollte
  • Was Variant wirklich ist und die wenigen Fälle, in denen es die richtige Wahl ist
  • Warum Double Geldbeträge verdirbt und was Sie stattdessen nehmen
  • Wie Sie die zwei Typfehler lesen: Überlauf (6) und Typen unverträglich (13)
  • Eine Ein-Zeilen-Regel, um im Zweifel einen Typ zu wählen

Das mentale Modell: der Typ ist die Form der Box

Wenn eine Variable eine Box ist, dann ist der Typ ihre Form und ihr Fassungsvermögen. Long ist eine Box für Ganzzahlen bis rund zwei Milliarden. String dehnt sich, um Text aufzunehmen. Boolean ist eine Box mit Platz für genau zwei Zustände. Double hält Bruchzahlen, aber in einer binären Näherung. Variant ist eine gestaltwandelnde Box, die sich allem anpasst, was Sie hineinwerfen.

Jeder Typ ist ein Kompromiss. Ein enger, spezifischer Typ fängt Fehler früh und läuft schnell; ein loser Typ (Variant) akzeptiert alles und verschiebt den Fehler auf später, an eine schwerer auffindbare Stelle. „Welcher Typ?“ ist also dieselbe Frage wie „Was bin ich bereit, schiefgehen zu lassen?“

Die Regel, die Überlauf verhindert: nutzen Sie Long, niemals Integer

VBA hat zwei Ganzzahl-Typen, und einer davon ist ein Relikt. Integer ist 16-Bit: seine Obergrenze liegt bei 32.767. Long ist 32-Bit: es reicht über zwei Milliarden hinaus. In dem Moment, in dem ein Integer 32.768 halten soll, wirft VBA „Überlauf“ (Fehler 6) und stoppt.

Das klassische Opfer ist ein Zeilenzähler:

' FRAGIL — läuft über, sobald das Blatt > 32,767 Zeilen hat
Dim r As Integer
For r = 1 To lastRow          ' Fehler 6 bei Zeile 32,768
    ' ...
Next r

' KORREKT — Long verarbeitet alle 1,048,576 Zeilen
Dim r As Long
For r = 1 To lastRow
    ' ...
Next r

Ein modernes Arbeitsblatt hat 1.048.576 Zeilen — das Zweiunddreißigfache von Integers Grenze. Jede Variable, die Zeilen zählt, eine .Row-Nummer hält oder eine große Summe ansammelt, muss Long sein. Und jetzt kommt's: Auf heutiger Hardware gibt es keinen Geschwindigkeitsvorteil durch Integer — VBA wandelt es intern ohnehin in einen 32-Bit-Wert um. Die Regel hat also keinen Nachteil: Nutzen Sie Long für jede Ganzzahl und vergessen Sie, dass Integer existiert.

Die Regel zu Variant: eine bewusste Wahl, niemals ein Standard

Jede Variable, die Sie ohne Typ deklarieren — Dim x — ist eine Variant, und ebenso jede nicht deklarierte Variable. Eine Variant hält alles: jetzt eine Zahl, später Text, ein Array, ein Objekt. Das klingt bequem, und darum verlassen sich Anfänger darauf. Und genau darum verstecken sich ihre Bugs.

Die Kosten sind real. Eine Variant braucht mehr Speicher, läuft langsamer und — am wichtigsten — fängt keine Typfehler ab. Eine Zahl, die als Text ankommt, bleibt innerhalb einer Variant Text und lässt still eine spätere Berechnung scheitern, wo ein Long sofort an der Stelle des Fehlers einen Fehler geworfen hätte.

Doch Variant hat einen wirklich großartigen Einsatz, und der lohnt sich zu kennen, weil er schnell ist: einen ganzen Range in einem Zug in den Speicher einzulesen.

' Der EINE großartige Variant-Einsatz: einen Bereich in einem Zug in ein 2-D-Array holen
Dim data As Variant
data = ThisWorkbook.Worksheets("Data").Range("A1:C1000").Value

Dim i As Long
For i = 1 To UBound(data, 1)
    data(i, 2) = data(i, 2) * 1.1     ' im Speicher arbeiten — keine Zugriffe Zelle für Zelle
Next i

Range("A1:C1000").Value = data        ' in einem Zug zurückschreiben

Dieses Muster ist dramatisch schneller, als Zellen einzeln anzufassen, und es erfordert eine Variant, weil Excel Ihnen ein Variant-Array übergibt. Nutzen Sie Variant hier und für Werte, die tatsächlich gemischt sind. Überall sonst deklarieren Sie den echten Typ.

Die Regel zu Geld: Double lügt beim letzten Cent

Double ist binäre Gleitkommazahl, kann also nicht jede Dezimalzahl exakt darstellen — das berühmte Ergebnis ist, dass 0.1 + 0.2 nicht exakt 0.3 ergibt. Für ein Diagramm oder eine physikalische Berechnung ist das unsichtbar. Bei Geld summieren sich diese winzigen Fehler, und Ihre Summen driften um einen Cent — genau die Sorte Sache, die einem Prüfer auffällt.

Dim a As Double
a = 0.1 + 0.2
Debug.Print (a = 0.3)         ' -> False   (a ist 0.30000000000000004)

Dim m As Currency
m = 0.1 + 0.2
Debug.Print (m = 0.3)         ' -> True    (Currency ist exakt bis auf 4 Nachkommastellen)

Nutzen Sie Currency für Geld — es ist ein Festkommatyp, exakt bis auf vier Nachkommastellen, und genau dafür gemacht. Müssen Sie Double verwenden (etwa weil Sie mehr als vier Nachkommastellen brauchen), runden Sie bewusst mit Round() oder Format(), bevor Sie vergleichen oder speichern. Testen Sie niemals zwei Double-Werte auf exakte Gleichheit; vergleichen Sie stattdessen innerhalb einer Toleranz.

Ein kurzer Rundgang durch die Alltagstypen

  • String — Text. Standardmäßig variabler Länge; feste Länge brauchen Sie selten.
  • BooleanTrue / False. Perfekt für Flags (isPaid, found).
  • Date — ein Datum und/oder eine Uhrzeit. Unter der Haube ist es eine Zahl (dieselbe serielle Zahl, die Excel nutzt), weshalb Sie mit Datumsangaben rechnen können.
  • Long — Ihre Standard-Ganzzahl, wie oben.
  • Double — Ihre Standard-Bruchzahl für Mathematik und Messwerte.
  • Currency — Geld.
  • Variant — nur bei bewusstem Einsatz.

Noch eine Falle, die hierher gehört: Dim i, j As Long macht nur j zu einem Longi ist eine Variant. Jede Variable braucht ihr eigenes As Type. Diese Deklarationsmechanik ist ausführlich in VBA Dim behandelt.

Wie ExcelMaster hilft

Typfehler — Überlauf bei einem großen Blatt, ein Double, das um einen Cent driftet, eine Variant, die einen Text-statt-Zahl-Bug verdeckt — sind von der schleichenden Sorte: Das Makro läuft, und die falsche Antwort taucht weiter unten in der Kette auf. Typen richtig zu wählen ist echte Ingenieursdisziplin, und diese Disziplin müssen Sie bei jedem Makro aufs Neue aufbringen.

ExcelMaster nimmt die Aufgabe in einfachem Deutsch entgegen — „Summiere Spalte D als Währung, zähle die Zeilen, markiere alles über Budget“ — und übernimmt die Typwahl für Sie: Long für die Zähler, exakte Arithmetik für das Geld, kein stiller Überlauf bei einem Blatt mit einer Million Zeilen. Sie schreiben weiterhin typisierte Makros, wo Sie feine Kontrolle brauchen; für den Alltagsjob beschreiben Sie das Ergebnis und überspringen die Klasse von Bugs, gegen die Typen da sind.

Häufig gestellte Fragen

Was ist der Unterschied zwischen Integer und Long in VBA?

Integer ist eine 16-Bit-Ganzzahl, gedeckelt bei 32.767; Long ist 32-Bit und reicht über zwei Milliarden hinaus. Weil ein Arbeitsblatt 1.048.576 Zeilen hat und Integer auf modernem Excel keinen Geschwindigkeitsvorteil bietet, sollten Sie Long für jede Ganzzahl nutzen und Integer ganz vermeiden. Integers Grenze zu überschreiten löst „Überlauf“ (Fehler 6) aus.

Sollte ich Variant in VBA verwenden?

Nur bewusst. Variant hält jeden Wert, aber es braucht mehr Speicher, läuft langsamer und verbirgt Typfehler (eine als Text gespeicherte Zahl wirft erst später einen Fehler). Sein einziger hervorragender Einsatz ist das Einlesen eines ganzen Range in ein 2-D-Array (data = Range("A1:C1000").Value), was sehr schnell ist. Überall sonst deklarieren Sie den konkreten Typ.

Welchen Datentyp sollte ich in VBA für Geld verwenden?

Nehmen Sie Currency. Es ist ein Festkommatyp, exakt bis auf vier Nachkommastellen, und vermeidet so die Rundungsdrift von Double (das 0.1 + 0.2 nicht exakt speichern kann). Verwenden Sie Double für Geld, runden Sie explizit mit Round(), bevor Sie vergleichen oder speichern, und testen Sie niemals zwei Double-Werte auf exakte Gleichheit.

Was ist der Standard-Datentyp in VBA?

Variant. Jede Variable, die ohne As Type deklariert — oder gar nicht deklariert — wird, ist eine Variant. Das ist bequem, aber fehleranfällig, weshalb Option Explicit plus explizite Typen die empfohlene Disziplin sind.

Warum bekomme ich „Typen unverträglich“ (Fehler 13)?

Sie haben einen Wert zugewiesen, der nicht zum Typ der Variable passt — zum Beispiel den Text "abc" in ein Long oder eine Zelle mit einem Fehlerwert in ein Double. Prüfen Sie, was tatsächlich in der Zelle oder Variable steckt (numerisch aussehender Text ist ein häufiger Übeltäter), und wandeln Sie ihn explizit mit CLng, CDbl oder CStr um, bevor Sie zuweisen.

Getestet in

Getestet in: Excel 365 (Windows 11), VBA 7.1 — zuletzt geprüft am 31.07.2026.

Verwandte Anleitungen: VBA Dim · VBA Const · VBA CStr · VBA Array · VBA For-Schleife