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

Forumthread: Sub End wurde erwartet

Sub End wurde erwartet
11.02.2017 14:45:06
Hlavac
Guten Tag, mein Kopiervorgang wird nicht ausgeführt. Ich bekomme auch kein Kompilierungs-Fehler angezeigt
Ich möchte nach Doppelklick auf Zelle A1 den Inhalt der Zellen A1 und B1 in Zelle G11 kopieren
Wer kann mir bitte helfen?
Sub Kopieren()
End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address "$A$1" Then Exit Sub
ActiveSheet.Range("A1:B1").Copy ActiveSheet.Range("G11")
End If
End Sub

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sub End wurde erwartet
11.02.2017 14:48:58
Hajo_Zi

Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address = "$A$1" Then
ActiveSheet.Range("A1:B1").Copy ActiveSheet.Range("G11")
End If
End Sub
auf Exit Sub sollte man verzichten.

Anzeige
AW: Sub End wurde erwartet
11.02.2017 15:54:02
Gerd
Hallo,
so wäre ein Schuh draus geworden oder du lässt das "End If", das in deinem Code wegen
einzeiligem If..Then keine If-Bedingung hat, dort einfach weg.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address  "$A$1" Then
Exit Sub
Else
ActiveSheet.Range("A1:B1").Copy ActiveSheet.Range("G11")
End If
End Sub
Gruß Gerd
Anzeige
und die 3. Variante
11.02.2017 16:09:54
Luschi
Hallo Hlavac,
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address  "$A$1" Then Exit Sub
ActiveSheet.Range("A1:B1").Copy ActiveSheet.Range("G11")
End Sub
Gruß von Luschi
aus klein-Paris
PS: Warum Hajo 'Exit Sub' verteufelt, ist mir schleierhaft.
Anzeige
AW: und die 3. Variante
11.02.2017 18:52:47
Michael
Hi Luschi,
das hab ich auch nicht begriffen.
Deine Lösung packt ja das Problem am Schopf: das End If war zu viel und Ende...
Abgesehen davon ist das activesheet für die Katz, denn das Event funktioniert ja nur exakt hier.
Gruß,
Michael
...weshalb man auch Me. oder gar nichts ...
11.02.2017 19:00:00
Luc:-?
…schreiben könnte…
Gruß, Luc :-?
Besser informiert mit …
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Sub End wurde erwartet: Fehlerbehebung in Excel VBA


Schritt-für-Schritt-Anleitung

Um den Fehler "Sub End wurde erwartet" in deinem VBA-Code zu beheben, folge diesen Schritten:

  1. Öffne den Visual Basic for Applications (VBA) Editor.

    • Drücke Alt + F11 in Excel.
  2. Finde den entsprechenden Code.

    • Suche nach dem Sub, wo der Fehler auftritt. Dies könnte etwas sein wie:
      Sub Kopieren()
      End Sub
  3. Korrigiere den Code.

    • Der Fehler kann auftreten, wenn ein End If oder ein End Sub fehlt. Stelle sicher, dass deine If-Bedingungen korrekt geschlossen sind. Hier ist ein korrektes Beispiel:
      Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
       If Target.Address = "$A$1" Then
           ActiveSheet.Range("A1:B1").Copy ActiveSheet.Range("G11")
       End If
      End Sub
  4. Teste deinen Code.

    • Klicke zurück zu Excel und teste die Funktion, um sicherzustellen, dass alles wie gewünscht funktioniert.

Häufige Fehler und Lösungen

Fehler 1: Fehler beim Kompilieren: End Sub erwartet
Lösung: Überprüfe, ob alle If-Bedingungen korrekt geschlossen sind. Wenn du ein einzeiliges If verwendest, ist kein End If nötig.

Fehler 2: Zelle wird nicht korrekt angesprochen.
Lösung: Stelle sicher, dass die Zellenadressen korrekt sind, z.B. "$A$1".


Alternative Methoden

Wenn du alternative Methoden ausprobieren möchtest, um den Inhalt von Zellen zu kopieren, könntest du die Value-Eigenschaft verwenden:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Address = "$A$1" Then
        ActiveSheet.Range("G11").Value = ActiveSheet.Range("A1").Value & " " & ActiveSheet.Range("B1").Value
    End If
End Sub

Diese Methode vermeidet die Verwendung des Copy-Befehls und ist effizienter für einfache Werte.


Praktische Beispiele

Hier sind einige Beispiele, wie du den Doppelklick in Excel nutzen kannst:

  1. Inhalt kopieren:

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
       If Target.Address = "$A$1" Then
           ActiveSheet.Range("A1:B1").Copy ActiveSheet.Range("G11")
       End If
    End Sub
  2. Formeln kopieren:

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
       If Target.Address = "$A$1" Then
           ActiveSheet.Range("G11").Formula = "=A1+B1"
       End If
    End Sub

Tipps für Profis

  • Option Explicit: Füge Option Explicit am Anfang deines Moduls hinzu, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler frühzeitig zu erkennen.

  • Vermeide ActiveSheet: Arbeite mit Me. statt ActiveSheet, um Missverständnisse beim Verweis auf das aktuelle Arbeitsblatt zu vermeiden.

  • Fehlerbehandlung: Integriere eine einfache Fehlerbehandlung, um den Code robuster zu machen:

    On Error Resume Next
    ' Dein Code hier
    On Error GoTo 0

FAQ: Häufige Fragen

1. Was bedeutet "End Sub erwartet"?
Das bedeutet, dass dein VBA-Code an einer Stelle ein End Sub benötigt, um die Subroutine korrekt abzuschließen.

2. Wie kann ich den Fehler in meinem Code finden?
Überprüfe alle Bedingungen und stelle sicher, dass jede If-Anweisung richtig abgeschlossen ist. Achte auch auf korrekte Syntax.

3. Warum sollte ich Exit Sub vermeiden?
Es ist oft nicht notwendig, Exit Sub in einfachen Bedingungen zu verwenden, da der Code ansonsten nicht weiter ausgeführt wird. Stelle sicher, dass die Logik deines Codes klar bleibt.

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