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

VBA Zeilenfortsetzung in Excel — der Unterstrich, seine Regeln und die String-Falle

|

VBA Zeilenfortsetzung in Excel — der Unterstrich, seine Regeln und die String-Falle

TL;DR — Beenden Sie eine Zeile mit einem Leerzeichen und einem Unterstrich _, und VBA behandelt die nächste physische Zeile als Teil derselben Anweisung. Der Parser entfernt das _ und fügt die Zeilen vor dem Kompilieren zusammen, sodass sich nur ändert, wie sich Ihre Quelle liest — nie, was läuft. Drei Regeln bringen jeden zu Fall: Das Leerzeichen vor _ ist Pflicht, nichts (nicht einmal ein Kommentar) darf ihm folgen, und Sie können nicht innerhalb eines "string" umbrechen — Sie schließen das Anführungszeichen, fügen & _ hinzu und machen weiter.

' Eine logische Anweisung, verteilt auf drei lesbare Zeilen
Workbooks.Open Filename:="C:\Reports\Q3.xlsx", _
               ReadOnly:=True, _
               UpdateLinks:=False

' Ein langer String: Anfuehrungszeichen schliessen, mit & _ verbinden, weiter
MsgBox "The report finished at " & _
       Format(Now, "hh:mm") & " with no errors."

Was Sie lernen

  • Das mentale Modell — ein Quelltext-Token, das der Parser vor dem Kompilieren entfernt
  • Die drei reinen Quelltext-Token, und wo die Fortsetzung unter ihnen sitzt
  • Das Pflicht-Leerzeichen, und warum dem Unterstrich nichts folgen darf
  • Die String-Falle — warum Sie nicht innerhalb von Anführungszeichen umbrechen können
  • Warum ein Kommentar eine Fortsetzung stillschweigend tötet
  • Unterstrich gegenüber Doppelpunkt — eine Anweisung teilen gegenüber viele verbinden
  • Die Meinung: die Fortsetzung ist für Menschen, also nutzen Sie sie wie einer

Das mentale Modell: ein Token, das der Parser entfernt

VBA hat keine Zeilenlängenbegrenzung — eine Anweisung kann 500 Zeichen lang sein und einwandfrei laufen. Das Zeilenfortsetzungszeichen gibt es also aus genau einem Grund: Sie. Ein Leerzeichen gefolgt von einem Unterstrich _ am Zeilenende sagt dem Parser: „Diese Anweisung ist nicht fertig; die nächste physische Zeile setzt sie fort." Bevor der Compiler Ihren Code je zu sehen bekommt, entfernt der Parser das _, klebt die Zeilen zusammen und kompiliert eine logische Anweisung.

Das ist das ganze mentale Modell, und es erklärt jede Regel weiter unten. Weil _ ein Token des Quelltext-Layouts ist, das vor dem Kompilieren verbraucht wird, muss es dort sitzen, wo der Parser eine Pause der Anweisung erwartet — an einem natürlichen Bruch, mit einem Leerzeichen davor und mit wirklich nichts dahinter. Es ist Zeichensetzung für den Leser, keine Anweisung an die Maschine.

Drei Token, die das Makro nie ausführt

Die Zeilenfortsetzung ist eines von drei Dingen, die Sie tippen und die das laufende Makro nie ausführt. Sie prägen die Quelle und die Kompilierung, nicht den Lauf:

Token Was er mit Ihrer Quelle macht Was er den Lauf kostet
' Kommentar Hinterlässt Notizen und deaktiviert Code, den der Compiler löscht Nichts — er läuft nie
_ Zeilenfortsetzung Zerlegt eine lange Anweisung über mehrere Zeilen Nichts — der Parser entfernt sie vor dem Kompilieren
Option Explicit Erzwingt, dass jeder Name deklariert wird Läuft zur Compile-Zeit, sodass Tippfehler sterben, bevor das Makro startet

Der Kommentar und die Fortsetzung werden beide vor dem Kompilieren gelöscht — reine Quelltext-Formatierung. Diese gemeinsame Natur ist auch der Grund, warum sie kollidieren, wie die Kommentar-Falle weiter unten zeigt.

Regel 1: ein Leerzeichen vor dem Unterstrich, nichts dahinter

Die Fortsetzung besteht aus zwei Zeichen in fester Reihenfolge — Leerzeichen, dann Unterstrich — und sie muss das Letzte auf der Zeile sein.

' RICHTIG - Leerzeichen vor _, und es beendet die Zeile
total = price + _
        tax

' FALSCH - kein Leerzeichen vor dem Unterstrich
total = price +_
        tax                ' Compile error / unexpected token

' FALSCH - etwas hinter dem Unterstrich (sogar ein Kommentar)
total = price + _ ' Steuer addieren
        tax                ' Expected: end of statement

Fehlt das Leerzeichen, liest sich +_ als ein Token; setzen Sie irgendetwas hinter das _ — ein versehentliches Leerzeichen ist in Ordnung, ein Kommentar oder Code nicht —, und VBA meldet Expected: end of statement. Der Fix ist mechanisch: _ steht ganz am Ende, und die Erklärung kommt auf ihre eigene Zeile darüber.

Regel 2: Sie können nicht innerhalb eines Strings umbrechen

Das ist die Falle, die die Leute hierher bringt. Ein Unterstrich innerhalb eines Strings in Anführungszeichen ist bloß ein wörtlicher Unterstrich — er ist Text, keine Fortsetzung. Sie können einen langen String also nicht umbrechen, indem Sie ein _ mitten hineinfallen lassen:

' KAPUTT - das _ ist woertlicher Text innerhalb der Anfuehrungszeichen
MsgBox "This is a very long message _
        that keeps going"       ' der String schliesst nie -> compile error

' RICHTIG - Anfuehrungszeichen schliessen, mit & _ verketten, naechste Zeile weiter
MsgBox "This is a very long message " & _
       "that keeps going"

Um einen langen String zu teilen, schließen Sie das Anführungszeichen, fügen & _ hinzu (Verkettung, dann weiter) und öffnen auf der nächsten Zeile ein neues Anführungszeichen. Achten Sie auf das nachgestellte Leerzeichen im ersten Anführungszeichen — "message " & behält das Leerzeichen, das der Zeilenumbruch sonst verstecken würde. Dieses eine Muster — " ... " & _ — deckt neunzig Prozent des echten Fortsetzungsgebrauchs ab, denn lange Strings (Meldungen, SQL, Pfade) sind das, was am ehesten umgebrochen werden muss.

Regel 3: ein Kommentar tötet eine Fortsetzung

Weil ein Kommentar und eine Fortsetzung beide reine Quelltext-Token sind, können sie sich keine Zeile teilen. Ein Apostroph beendet die logische Anweisung, also steckt ein _, das nach einem ' kommt, im Kommentar und tut nichts:

' KAPUTT - der Kommentar verschluckt die Fortsetzung
total = price _  ' Grundpreis
      + tax       ' "+ tax" ist jetzt eine eigene kaputte Anweisung

' RICHTIG - Kommentar auf eigener Zeile, ueber der Anweisung
' Grundpreis plus Steuer
total = price _
      + tax

Das Symptom ist dasselbe Expected: end of statement auf der folgenden Zeile, das an die falsche Stelle zeigt. Die Regel ist einfach, sobald Sie einmal darauf hereingefallen sind: Setzen Sie nie einen Kommentar auf eine fortgesetzte Zeile — heben Sie ihn auf eine eigene Zeile. (Die Anleitung zum Kommentar behandelt diese Kollision von der anderen Seite.)

Unterstrich gegenüber Doppelpunkt: gegensätzliche Werkzeuge

Das _ teilt eine Anweisung über viele Zeilen. Der Doppelpunkt : tut das genaue Gegenteil — er fügt viele Anweisungen auf eine Zeile:

' Doppelpunkt: drei Anweisungen auf eine physische Zeile gequetscht
x = 1 : y = 2 : z = 3

' Unterstrich: eine Anweisung entspannt ueber drei Zeilen
result = Application.WorksheetFunction.SumIfs( _
             data, keys, criteria)

Sie werden ständig verwechselt, weil beide mit Zeilengrenzen zu tun haben, aber sie ziehen in entgegengesetzte Richtungen. Greifen Sie zu _, um eine lange Anweisung lesbar zu machen; gehen Sie sparsam mit : um — Anweisungen auf eine Zeile zu packen versteckt sie vor Breakpoints und vor jedem, der den Code liest, halten Sie es also höchstens auf triviale Paare. Das eine Werkzeug dient dem Leser; das andere dient meist niemandem.

Die Meinung: die Fortsetzung ist für Menschen, also nutzen Sie sie entsprechend

_ verdient seinen Platz genau auf den Zeilen, die ein Mensch auf einem Bildschirm nur schwer lesen kann: ein Workbooks.Open mit sechs benannten Argumenten, eine If-Bedingung mit vier And-Klauseln, ein SumIfs mit einem Dutzend Bereichen, ein SQL- oder Verbindungsstring, aus Teilen zusammengesetzt. Brechen Sie diese an ihren natürlichen Gelenken um — nach einem Komma, vor einem Operator, vor jedem And —, und die Struktur der Anweisung wird sichtbar.

Aber die Fortsetzung ist ein Werkzeug für die Lesbarkeit, keine Tugend an sich. Eine kurze Zeile ohne Grund umzubrechen oder eine Anweisung fünfzehnmal fortzusetzen, tauscht die eine Art von Unlesbarkeit gegen eine andere (VBA deckelt eine Anweisung sogar bei rund zwei Dutzend Fortsetzungen). Der Test ist ehrlich und einfach: Macht der Umbruch die Anweisung für einen Menschen leichter zu lesen? Wenn ja, nutzen Sie ihn; wenn nicht, lassen Sie die Zeile in Ruhe. Der Maschine war es ohnehin nie wichtig.

Wenn die lange Zeile ein Symptom ist, nicht das Problem

Manchmal ist eine Anweisung lang, weil die Aufgabe wirklich komplex ist — verschachtelte WorksheetFunction-Aufrufe, ausufernde Kriterien, eine im Code zusammengesetzte Formel. Die Zeilenfortsetzung macht das lesbar, aber nicht einfach, und eine 200 Zeichen lange Anweisung, über acht Zeilen gebrochen, ist noch immer schwer richtig hinzubekommen. ExcelMaster lässt Sie das Ergebnis benennen, statt die Anweisung von Hand zusammenzubauen — „summiere die Verkäufe, wo die Region West ist und das Datum in Q3 liegt" —, und es schreibt und führt den Code für Sie aus und sichert vorher Ihre Datei. Die lange Zeile ist nicht mehr Ihr Problem, weil Sie sie nie tippen müssen.

Häufig gestellte Fragen

Was ist das Zeilenfortsetzungszeichen in VBA?

Ein Leerzeichen gefolgt von einem Unterstrich _ am Zeilenende. Es sagt VBA, dass die Anweisung auf der nächsten physischen Zeile weitergeht. Der Parser entfernt den Unterstrich und fügt die Zeilen vor dem Kompilieren zu einer Anweisung zusammen, sodass sich nur ändert, wie die Quelle angeordnet ist.

Warum funktioniert meine VBA-Zeilenfortsetzung nicht?

Meist einer von drei Gründen: Es fehlt das Leerzeichen vor dem Unterstrich, etwas (oft ein Kommentar) folgt dem Unterstrich, oder Sie haben versucht, innerhalb eines Strings in Anführungszeichen umzubrechen. Das _ muss das letzte Zeichen auf der Zeile sein, mit einem Leerzeichen davor, und Strings werden mit " ... " & _ geteilt, nicht durch einen Umbruch mitten im Anführungszeichen.

Wie setze ich in VBA einen langen String über mehrere Zeilen fort?

Schließen Sie den String mit einem Anführungszeichen, fügen Sie ein Leerzeichen, ein Kaufmannsund und die Fortsetzung hinzu — & _ — und öffnen Sie dann auf der nächsten Zeile ein neues Anführungszeichen: "first part " & _ dann "second part". Sie können den Unterstrich nicht in die Anführungszeichen setzen, weil er dort bloß ein wörtlicher Unterstrich ist.

Kann ich in VBA einen Kommentar auf eine fortgesetzte Zeile setzen?

Nein. Ein Apostroph beendet die logische Anweisung, also tut ein _ nach einem Kommentar nichts und die nächste Zeile bricht. Setzen Sie den Kommentar stattdessen auf seine eigene Zeile über der fortgesetzten Anweisung.

Was ist der Unterschied zwischen dem Unterstrich und dem Doppelpunkt in VBA?

Der Unterstrich _ teilt eine Anweisung über mehrere Zeilen, der Lesbarkeit halber. Der Doppelpunkt : tut das Gegenteil — er fügt mehrere Anweisungen auf eine physische Zeile. Nutzen Sie _, um lange Anweisungen lesbar zu machen; vermeiden Sie : außer für triviale Paare, da es Anweisungen vor Breakpoints und Lesern versteckt.

Getestet in

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

Verwandte Anleitungen: VBA Kommentar · VBA Option Explicit · VBA MsgBox · VBA If Then Else · VBA Dim