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

Fortsetzung nach End Sub

Forumthread: Fortsetzung nach End Sub

Fortsetzung nach End Sub
Nchne2909
Hallo,
ist es möglich, nach End Sub ein neue Prozedur automatisch fort zu setzen?
Danke, chn
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Fortsetzung nach End Sub
20.10.2011 15:34:23
Sheldon
Hallo,
nicht nach End Sub, aber in die letzte Zeile vor End Sub schreibst du einfach den Namen der anschließend zu startenden Sub.
Gruß
Sheldon
AW: Fortsetzung nach End Sub
20.10.2011 15:39:36
Nchne2909
Danke, will aber nach End Sub einen neuen Sub ausführen. Ok, wenn es nicht möglich ist muss ich nach ein anderen Lösung schauen.
chn
Anzeige
AW: Fortsetzung nach End Sub
20.10.2011 15:41:40
Sheldon
Eine andere Möglichkeit: Starte von einem dritten

Sub aus das erste Sub. Nachdem das fertig gelaufen ist, kann das Rahmen-

Sub das neue starten. Schon gehts auch nach End Sub
.
Gruß
Sheldon
AW: Fortsetzung nach End Sub
20.10.2011 16:00:53
Nchne2909
Da sind meine Fähigkeiten begrenzt. Das Sub befindet sich in ThisWorkbook und wird beim Start von Excel automatisch ausgeführt (Workbook Open). Und ich denke da kann es nur ein Sub geben, oder?
Sobald ich noch ein weiteres einfügen will, wird es Allgemein.
chn
Anzeige
AW: Fortsetzung nach End Sub
20.10.2011 16:22:51
Sheldon
Hallo chn,
ich verstehe das so: Du hast bereits Code im Sub Workbook_Open. Wenn der fertig ist, willst du ein weiteres Sub ausführen. Dabei ist dir aber wichtig, dass das erste Sub bereits beendet ist. Füge ein Modul ein und lege darin ein neues Makro an z. B. mit Namen BeiStart(). Dort hinein kopierst du den Code aus Workbook_Open. In Workbook_Open schreibst du statt dessen nur noch den Namen des neuen Makros, also BeiStart und als zweite Zeile den Namen des zweiten Makros, das gestartet werden soll. Dann ist der sub mit dem ersten Code beendet, bevor der zweite gestartet wird. Gut so?
Gruß
Sheldon
Anzeige
Dabei muss man aber beachten, dass keine ...
20.10.2011 17:01:09
Luc:-?
Me-Objektverweise darin auftreten, Sheldon;
ob chn dass dann hinkriegt, wo er/sie doch schon das Andere nicht so recht verstehen wollte… ;-)
Aber im Prinzip ist deine Darstellung auch meine Auffassung — Event-Prox möglichst nur als Verteiler benutzen, obwohl auch ich mitunter davon abweiche.
Im Übrigen kann man in Dokument-Klassenmodulen nicht nur Ereignisprozeduren (jede nur 1x, das ist richtig*), sondern auch beliebige andere unterbringen, zumal, wenn es sich quasi nur um Codeauslagerungen handelt. Sonst kann man sie nämlich nur als „Eigenschaft“ des Klassenmoduls aufrufen, also als intKmodulName.prozName, und da sollte das Modul dann besser keinen 0815-StddNamen haben (kann man ändern!).
*Sheet-bezogene Eventprox gibt's allerdings 3x, book-bezogene 2x, aber das führt jetzt wohl doch zu weit.
Viell sollte man noch erwähnen, dass man vor den Namen der aufzurufenden Proz auch Call(… schreiben kann, dann wird ggf deutlicher, was gemeint ist. Außerdem gibt's ja noch den Run "…"-Befehl…
Gruß Luc :-?
Anzeige
dem pflichte ich bei
20.10.2011 17:44:18
Sheldon
Hi Luc:-?,
da hast du völlig recht, das hätte ich auch erwähnen sollen, habe es aber gar nicht bedacht. Mir ging es mehr darum, die Möglichkeit überhaupt aufzuzeigen, wie man ein weiteres Makro nach dem End Sub-Befehl ausführen kann. Aber wenn ich mich schon dazu versteige zu erklären, dass solche Subs in ein Modul sollen, dann muss natürlich Me mit bedacht werden.
Ich unterstreiche an dieser Stelle endlich mal, wie glücklich mich dieses Forum macht, denn ich bin endlich nicht mehr nur der Einäugige unter den Blinden, sondern kann hier echt noch ganz viel lernen und bekomme auch Lust dazu, meine teilweise erst als solche erkannten Wissenslücken zu füllen! So schreckte ich immer vor Arrayformeln zurück, aber nun mache ich nach und nach meine ersten Gehversuche dank der inspirierenden Beiträge von euch Freaks :-)
Gruß
Sheldon
Anzeige
Freut mich, schöWE! owT
21.10.2011 01:52:15
Luc:-?
:-?
AW: Fortsetzung nach End Sub
21.10.2011 11:02:45
Nchne2909
Genau das war mein Problem....erst muss das eine Sub beendet sein, bevor das nächste gestartet wird. Mit den Vorschlag in Workbook_open die Makros BeiStart und die nächste einzutragen, konnte ich mein Problem lösen.
Vielen Danke, chn
;
Anzeige

Infobox / Tutorial

Fortsetzung nach End Sub in Excel VBA


Schritt-für-Schritt-Anleitung

Um in Excel VBA eine neue Prozedur nach dem Befehl End Sub auszuführen, musst du einige Schritte befolgen. Hier ist eine einfache Anleitung:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul:

    • Klicke mit der rechten Maustaste auf dein Projekt im Projektfenster und wähle Einfügen > Modul.
  3. Füge deinen Code hinzu:

    • Schreibe zuerst die Prozedur, die du ausführen möchtest, z.B. BeiStart(). Diese Prozedur kann den Code enthalten, den du nach dem End Sub ausführen möchtest.
    Sub BeiStart()
       ' Dein Code hier
    End Sub
  4. Ändere dein Workbook_Open-Sub:

    • In der Prozedur Workbook_Open rufst du nun BeiStart und das zweite Sub auf, das du ausführen möchtest.
    Sub Workbook_Open()
       Call BeiStart
       Call ZweitesSub
    End Sub
  5. Speichere dein Projekt:

    • Speichere die Änderungen, um sicherzustellen, dass alles korrekt funktioniert.

Häufige Fehler und Lösungen

  • Fehlermeldung "End Sub erwartet":

    • Dies tritt auf, wenn du eine Prozedur nicht richtig geschlossen hast. Stelle sicher, dass jede Prozedur mit End Sub abgeschlossen ist.
  • Das Sub wird nicht aufgerufen:

    • Überprüfe, ob der Name des Subs korrekt geschrieben ist und dass es sich in einem Modul befindet, das erreichbar ist.

Alternative Methoden

Es gibt mehrere Möglichkeiten, wie du nach dem End Sub eine andere Prozedur ausführen kannst:

  • Verwendung von Call: Du kannst Call verwenden, um die nächste Prozedur klarer zu kennzeichnen.

    Call ZweitesSub
  • Verwendung von Application.Run: Dies ermöglicht es dir, ein Makro auszuführen, das in einem anderen Modul definiert ist.

    Application.Run "ZweitesSub"

Praktische Beispiele

Hier ist ein einfaches Beispiel, um die Funktionsweise zu verdeutlichen:

Sub Workbook_Open()
    Call BeiStart
    Call ZweitesSub
End Sub

Sub BeiStart()
    MsgBox "Erstes Makro wurde ausgeführt!"
End Sub

Sub ZweitesSub()
    MsgBox "Zweites Makro wurde ausgeführt!"
End Sub

Wenn du Excel öffnest, wird zuerst das BeiStart-Sub und danach das ZweitesSub ausgeführt.


Tipps für Profis

  • Nutze Module: Halte deinen Code modular, indem du verschiedene Subs in unterschiedlichen Modulen speicherst. Dies macht das Management einfacher.

  • Verwende Call: Dies kann den Code lesbarer machen, besonders für Anfänger, da es deutlich macht, dass eine Prozedur aufgerufen wird.

  • Vermeide die Verwendung von Me in Modulen: Wenn du in einem Modul arbeitest, kann das Me-Objekt zu Verwirrung führen. Halte dich an klare Referenzen.


FAQ: Häufige Fragen

1. Kann ich mehrere Subs hintereinander aufrufen?
Ja, du kannst so viele Subs hintereinander aufrufen, wie du möchtest, solange jede Prozedur mit End Sub beendet ist.

2. Was passiert, wenn ich End Sub vergesse?
Wenn du End Sub vergisst, bekommst du eine Fehlermeldung wie "End Sub erwartet". Achte darauf, jede Prozedur korrekt zu beenden.

3. Wie kann ich sicherstellen, dass ein Sub vor dem nächsten ausgeführt wird?
Indem du die Subs in der richtigen Reihenfolge aufrufst und sicherstellst, dass jede vorherige Prozedur mit End Sub abgeschlossen ist, wird die Ausführung in der gewünschten Reihenfolge erfolgen.

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