Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Fehler beim Kompilieren: Erwartet: Anweisungsende

Fehler beim Kompilieren: Erwartet: Anweisungsende
19.09.2013 13:30:36
Georg
Hallo Excel Welt,
ich hab voll die dämliche DAU-Frage, die mich gerade mal wahnsinnig macht.
Wieso bekomme ich auf diesen Code:

Sub kopieren()
Range("A86").Copy Range("B86").PasteSpecial Paste:=xlpasteValues
End Sub
diese Fehlermeldung:
Fehler beim Kompilieren: Erwartet: Anweisungsende
?
Danke und Gruß Georg

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler beim Kompilieren: Erwartet: Anweisungsende
19.09.2013 13:35:11
Hajo_Zi
Hallo Georg,
da ein Enter nach Copy fehlt.
Values sind immer 2 Zeilen.
Gruß Hajo

AW: Fehler beim Kompilieren: Erwartet: Anweisungsende
19.09.2013 13:39:17
Georg
Hallo Hajo,
wenn ich nur copy sage, dann geht es in einer Zeile, wenn ich aber copy und dann ein pastespecial .. mache benötige ich zwei Zeilen. Ist das so richtig?
Wär ich nieeee drauf gekommen! Vielen Dank Hajo!!
Gruß Georg

Anzeige
Ja, das ist richtig!
19.09.2013 17:28:35
Erich
Hi Georg,
"Copy" und "PasteSpecial" sind Methoden der Klasse "Range".
Die beiden haben - auch in deiner Anwendung - nichts miteinander zu tun, außer dass beide
mit der Zwischenablage arbeiten.
Es sind zwei unabhängige Anweisungen, zwei verschiedene Methodenaufrufe für verschiedene Objekte (Ranges).
Copy wendest du an auf die Zelle A86. Dann steht die Zelle A86 in der Zwischenablage, mit Wert, Formaten usw.
PasteSpecial wendest du an auf die Zelle B86. Wegen des Parameters "xlPasteValues"
holt PasteSpecial nur den Wert aus der Zwischenablage und schreibt ihn in B86.
Schau dir diese Möglichkeiten mal an:

Option Explicit
Sub kopieren1()                     ' nur Zellwert
Range("A86").Copy
' jetzt ist die Zelle A86 in der Zweischenablage
Range("B86").PasteSpecial Paste:=xlPasteValues
' ...PasteSpecial Paste:=xlPasteValues holt
' den Wert aus der Zweischenablage
End Sub
Sub kopieren2()            ' Zellwert, Formate, ...
Range("A86").Copy Destination:=Range("B86")
' oder
Range("A86").Copy Range("B86")
End Sub
' So gehts am einfachsten:
Sub kopieren3()                     ' nur Zellwert
Range("B86") = Range("A86").Value
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
auch mit nur sichtbaren möglich?
19.09.2013 17:44:07
Georg
Hallo Erich,
... klasse, wieder was gelernt! Wieviel Arten zu kopieren gibt es denn eigentlich....?
Das klappt ja auch mit Bereichen. Aber auch dann noch, wenn im Quellbereich bereits gefiltert oder sonstwie ausgeblendet ist und ich nur die sichtbaren Zellen haben will?
Sub kopieren3()                     ' nur Zellwert
Range("B6:B80") = Range("A6:A80").Value
End Sub

Gruß Georg

Anzeige
AW: Kopieren ohne Ausgeblendete
20.09.2013 09:21:22
Georg
Hallo Erich,
ja, dort und sonst in der Recherche finde ich aber nur die "klassische" Variante mit: erst das eine Blatt, dann das andere Blatt, wie man es aus dem Recorder bekommt.
Sub aatest()
Range("B7:D36").SpecialCells(xlCellTypeVisible).Copy
Sheets("Lieferschein").PasteSpecial Paste:=xlPasteValues
Sheets("Selektion").Select
Range("D3").Select
End Sub
An dem o.a. Code gefiel mir, dass alles in einer Zeile abgefrühstückt wird. Also irgendwie so...:
Sub kopieren3()
Range("B6:B80").SpecialCells(xlCellTypeVisible) = Range("A6:A80").SpecialCells( _
xlCellTypeVisible).Value
End Sub
Dabei kopiert er aber nur die erste Zelle. Den Rest nicht... :-(
Geht da dennoch was?
Danke Georg

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Fehler beim Kompilieren: Erwartet: Anweisungsende in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Code überprüfen: Stelle sicher, dass dein VBA-Code syntaktisch korrekt ist. Ein typischer Fehler, der den Fehler "Fehler beim Kompilieren: Erwartet: Anweisungsende" auslöst, ist das Fehlen eines Enter nach dem Copy-Befehl.

    Beispiel:

    Sub kopieren()
       Range("A86").Copy
       Range("B86").PasteSpecial Paste:=xlPasteValues
    End Sub
  2. Anweisungen trennen: Achte darauf, dass jede Anweisung in einer neuen Zeile steht, wenn du Copy und PasteSpecial verwendest.

  3. Variablen deklarieren: Verwende Option Explicit ganz oben in deinem Code, um sicherzustellen, dass alle Variablen deklariert werden.

  4. Fehlerbehebung: Wenn du trotz korrektem Code weiterhin den Fehler "vba erwartet anweisungsende" erhältst, überprüfe, ob vielleicht das Gleichheitszeichen (=) oder andere Syntaxfehler vorliegen.


Häufige Fehler und Lösungen

  • Fehler: "Fehler beim kompilieren erwartet anweisungsende"
    Lösung: Stelle sicher, dass alle Anweisungen korrekt abgeschlossen sind. Ein häufiger Grund für diesen Fehler ist das Fehlen eines End Sub oder falsche Zeilenumbrüche.

  • Fehler: "Fehler beim kompilieren: Syntaxfehler"
    Lösung: Überprüfe die gesamte Syntax deines Codes. Achte besonders auf fehlende Klammern oder Anführungszeichen.

  • Fehler: "End Sub erwartet"
    Lösung: Stelle sicher, dass alle Sub-Prozeduren korrekt mit End Sub abgeschlossen sind.


Alternative Methoden

  • Direktes Zuweisen von Werten: Wenn du nur Werte kopieren möchtest, kannst du die Zuweisung direkt verwenden:

    Range("B86").Value = Range("A86").Value
  • Kopieren von sichtbaren Zellen: Wenn du nur sichtbare Zellen kopieren möchtest, kannst du SpecialCells verwenden:

    Range("B6:B80").SpecialCells(xlCellTypeVisible).Value = Range("A6:A80").SpecialCells(xlCellTypeVisible).Value

Praktische Beispiele

  1. Kopieren mit PasteSpecial:

    Sub kopieren()
       Range("A86").Copy
       Range("B86").PasteSpecial Paste:=xlPasteValues
    End Sub
  2. Kopieren ohne ausgeblendete Zeilen:

    Sub kopierenOhneAusgeblendete()
       Range("B7:D36").SpecialCells(xlCellTypeVisible).Copy
       Sheets("Zielblatt").PasteSpecial Paste:=xlPasteValues
    End Sub

Tipps für Profis

  • Verwende Option Explicit: Damit wird sichergestellt, dass alle Variablen deklariert sind, was viele Fehler verhindert.
  • Nutze Debug.Print: Damit kannst du den Status deiner Variablen und den Fluss deines Codes verfolgen, um Fehler schneller zu identifizieren.
  • Vermeide zu große Blöcke: Halte deinen Code übersichtlich und in kleinen, verständlichen Blöcken. Dies erleichtert die Fehlersuche.

FAQ: Häufige Fragen

1. Was bedeutet "vba erwartet anweisungsende"?
Dieser Fehler tritt auf, wenn der VBA-Interpreter eine Anweisung nicht korrekt abschließen kann, meist wegen eines Syntaxfehlers.

2. Wie kann ich den Fehler "fehler beim kompilieren" vermeiden?
Überprüfe deinen Code auf korrektes Zeilenformat, schließe alle Prozeduren ordnungsgemäß mit End Sub ab und stelle sicher, dass alle Variablen deklariert sind.

3. Was sind die häufigsten Ursachen für "Fehler beim kompilieren in Excel VBA"?
Die häufigsten Ursachen sind fehlende oder falsche Syntax, nicht deklarierte Variablen und unvollständige Anweisungen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige