Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Erwartet: Anweisungsende

Forumthread: Erwartet: Anweisungsende

Erwartet: Anweisungsende
02.02.2021 09:21:36
Frederick
Guten Morgen,
Ich arbeite aktuell in VBA und habe ein Problem.
Wenn ich folgende (im Ausgangsdokumt an sich einwandfrei funktionierende) Formel über VBA in eine Zelle schreiben will bekomme ich den Fehler dass ein Anweisungsende erwartet werden würde. Wo liegt mein Fehler? Die Formel an sich funktioniert wenn sie in einer Zelle steht.
ActiveWorkbook.Worksheets("Essenmarken").Range("O13").FormulaLocal = "=WENN(UND(H13="";I13="";SUMME(J13:N13)=0);"";WENN(ODER(H13="";I13="";SUMME(J13:N13)=0;I13<H13);"FEHLER";WENN(UND(I13<HEUTE()+1;I13<>"");"Abgelaufen";WENN(UND(INDEX(J13:N13;$C$4)<>"";UND((HEUTE()+1)>=H13;(HEUTE()+1)<=I13));"Reserviert";"ausst."))))"
Vielen Dank im voraus
Frederick V
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Erwartet: Anweisungsende
02.02.2021 09:28:02
MRUTOR
Hallo Frederick,
die Anfuehrungszeichen innerhalb der Formel muessen gedoppelt werden. Also z.B. H13=""""
Gruss Tor
AW: Erwartet: Anweisungsende
02.02.2021 09:41:10
Werner
Hallo,
und solltest du da dann auch noch Zeilenumbrüche drin haben, dann muss der "Formelstring" am Zeilenende mit Gänsefüßchen abgeschlossen und in der neuen Zeile mit & + Gänsefüßchen wieder begonnen werden.
Wäre dann so:
ActiveWorkbook.Worksheets("Essenmarken").Range("O13").FormulaLocal = _
"=WENN(UND(H13="""";I13="""";SUMME(J13:N13)=0);"""";WENN(ODER(H13="""";I13="""";" _
& "SUMME(J13:N13)=0;I13"""")" _
& ";""Abgelaufen"";WENN(UND(INDEX(J13:N13;$C$4)"""";UND((HEUTE()+1)>=H13;" _
& "(HEUTE()+1)
Gruß Werner
Anzeige
AW: Erwartet: Anweisungsende
02.02.2021 10:08:57
Frederick
Vielen Dank für die schnelle Hilfe!
Funktioniert super.
Kann mir noch jemand erklären warum ich in VBA dann plötzlich doppelte Anführungszeichen brauche?
Gruß Frederick
AW: Erwartet: Anweisungsende
02.02.2021 10:20:57
Frederick
Super, dankeschön!
gerne...
02.02.2021 11:13:38
MRUTOR
AW: Erwartet: Anweisungsende
02.02.2021 11:30:46
Daniel
Hi
Anführungszeichen können mehrere Funktionen haben.
Sie können
- den Anfang und Ende eines Textes markieren
- Normale Zeichen innerhalb des Textes sein.
Das automatisch zu erkennen ist nicht so leicht möglich.
Durch die Verdopplung kennzeichnet du die gewünschte Verwendung als normales Zeichen.
Gruß Daniel
Anzeige
Gerne u. Danke für die Rückmeldung. o.w.T.
02.02.2021 21:47:43
Werner
;
Anzeige

Infobox / Tutorial

Umgang mit dem Fehler "Erwartet: Anweisungsende" in VBA


Schritt-für-Schritt-Anleitung

Um den Fehler "Anweisungsende erwartet" in VBA zu beheben, folge diesen Schritten:

  1. Doppelte Anführungszeichen verwenden: Wenn du Anführungszeichen in einer Formel verwendest, müssen diese verdoppelt werden. Zum Beispiel:

    ActiveWorkbook.Worksheets("Essenmarken").Range("O13").FormulaLocal = "=WENN(UND(H13="""";I13="""";SUMME(J13:N13)=0);"""";...)"
  2. Zeilenumbrüche richtig einfügen: Wenn deine Formel zu lang ist, kannst du sie auf mehrere Zeilen aufteilen. Schließe die Formel am Ende der Zeile mit einem Anführungszeichen und beginne die nächste Zeile mit & gefolgt von einem Anführungszeichen. Zum Beispiel:

    ActiveWorkbook.Worksheets("Essenmarken").Range("O13").FormulaLocal = _
    "=WENN(UND(H13="""";I13="""";SUMME(J13:N13)=0);"""";WENN(ODER(H13="""";I13="""";" & _
    "SUMME(J13:N13)=0;I13<H13);""Abgelaufen"";...)"

Häufige Fehler und Lösungen

  • Fehler beim kompilieren: "Erwartet Anweisungsende": Dieser Fehler tritt auf, wenn die Syntax nicht korrekt ist. Achte darauf, dass du alle Anführungszeichen korrekt verdoppelt hast.

  • Falsche Verwendung von Anführungszeichen: Wenn du Anführungszeichen innerhalb einer Formel einfügst, kann es zu Verwirrung kommen. Verdopple sie immer, um sie als Text zu kennzeichnen.

  • Zeilenumbrüche: Wenn du in VBA Zeilenumbrüche verwendest, stelle sicher, dass du die Formel richtig mit & verknüpfst.


Alternative Methoden

Falls das Problem weiterhin besteht, gibt es alternative Methoden zur Fehlerbehebung:

  • Verwendung von String-Variablen: Du kannst die Formel in einer String-Variable speichern und dann der Zelle zuweisen. Das macht das Debuggen einfacher:

    Dim formulaString As String
    formulaString = "=WENN(UND(H13="""";I13="""";SUMME(J13:N13)=0);"""";...)"
    ActiveWorkbook.Worksheets("Essenmarken").Range("O13").FormulaLocal = formulaString
  • Formel in Excel manuell testen: Kopiere die Formel manuell in eine Zelle, um sicherzustellen, dass sie dort funktioniert, bevor du sie in VBA verwendest.


Praktische Beispiele

Hier sind einige praktische Beispiele, um Fehler beim Kompilieren in VBA zu vermeiden:

  1. Einfaches Beispiel:

    ActiveWorkbook.Worksheets("Essenmarken").Range("O13").FormulaLocal = "=WENN(A1="""";""Leer"";""Nicht Leer"")"
  2. Komplexere Formel mit Zeilenumbrüchen:

    ActiveWorkbook.Worksheets("Essenmarken").Range("O13").FormulaLocal = _
    "=WENN(UND(A1="""";B1="""");""Beide leer"";""Nicht beide leer"")"

Tipps für Profis

  • Code-Formatierung: Achte darauf, deinen Code gut zu formatieren, um die Lesbarkeit zu erhöhen. Verwende Einrückungen bei langen Formeln.

  • Debugging-Tools: Nutze die Debugging-Tools in VBA, um Schritt für Schritt durch deinen Code zu gehen und Fehler leichter zu finden.

  • Kommentare: Kommentiere deinen Code, um die Funktionsweise deiner Formeln zu erklären. Das hilft dir und anderen, den Code später besser zu verstehen.


FAQ: Häufige Fragen

1. Warum muss ich in VBA doppelte Anführungszeichen verwenden?
In VBA kennzeichnen doppelte Anführungszeichen einen Text. Wenn du ein einfaches Anführungszeichen in einem Text verwenden möchtest, musst du es verdoppeln, damit VBA es nicht als Ende des Textes interpretiert.

2. Was sind die häufigsten Fehler, die den "Anweisungsende"-Fehler verursachen?
Die häufigsten Fehler sind falsche Anführungszeichen, fehlende Operatoren oder falsche Syntax in der Formel. Achte darauf, dass alle Elemente korrekt formatiert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige