Dies ist ein bisschen außerhalb des Bereichs Ihrer Frage, aber um mögliche Verwirrung für Leser, die neu in VBA sind, zu vermeiden: End
und End Sub
sind nicht gleich. Sie führen nicht die gleiche Aufgabe aus.
End
stoppt die Ausführung von ALLEN Code und Sie sollten fast immer Exit Sub
(bzw. Exit Function
) verwenden.
End hält ALLE Ausführung an. Während dies verlockend klingt, wird es auch gelöscht alle globalen und statischen Variablen. ( Quelle )
Siehe auch den MSDN-Dox für die End-Anweisung
Bei der Ausführung setzt die Anweisung
End
alle Variablen auf Modulebene und alle statischen lokalen Variablen in allen Modulen zurück. Um den Wert dieser Variablen beizubehalten, verwenden Sie stattdessen die AnweisungStop
. Sie können die Ausführung dann fortsetzen, während Sie den Wert dieser Variablen beibehalten.Hinweis: Die Anweisung
End
stoppt die Codeausführung abrupt, ohne das Unload-, QueryUnload- oder Terminate-Ereignis oder einen anderen Visual Basic-Code aufzurufen. Code, den Sie in die Unload-, QueryUnload- und Terminate-Ereignisse von Forms und Klassenmodulen platziert haben, wird nicht ausgeführt. Objekte, die aus Klassenmodulen erstellt wurden, werden gelöscht, Dateien, die mit der Open-Anweisung geöffnet wurden, werden geschlossen, und der von Ihrem Programm verwendete Speicher wird freigegeben. Objektverweise von anderen Programmen werden ungültig gemacht.
Auch ist End Sub
und Exit Sub
gleich. End Sub
kann nicht auf die gleiche Weise aufgerufen werden wie Exit Sub
, weil der Compiler dies nicht erlaubt.
Das bedeutet wiederum, dass Sie Exit Sub
haben müssen, was ein vollkommen legaler Vorgang ist:
Exit Sub
Beendet sofort die Sub-Prozedur, in der es angezeigt wird. Die Ausführung wird mit der Anweisung fortgesetzt, die der Anweisung folgt, dass nannte das Verfahren Sub . Exit Sub kann nur innerhalb eines Sub verwendet werden Verfahren.
Zusätzlich, und sobald Sie das Gefühl dafür bekommen, wie Prozeduren funktionieren, löscht End Sub
offensichtlich keine globalen Variablen. Aber es löscht lokale (Dim'd) Variablen :
End Sub
Beendet die Definition von dieser Prozedur .