Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

von modul private sub() aufrufen

Forumthread: von modul private sub() aufrufen

von modul private sub() aufrufen
04.02.2003 01:57:05
mehmet
hallo forum,
2 kurze fragen;
ich habe viele makros.

1. wenn ich den "makro run" button drücke, kommen sehr viele makros zu auswahl (button Menuleiste "makro ausführen").
um überblick zu verschaffen, würde ich gern alle makros
als "private sub()" benennen.

2. wenn jetzt makro1 läuft, soll nach beendigung gefragt werden,
ob makro2 laufen soll mit ja/nein,
wenn ja, dann lauf makro2,
wenn nein, dann abbruch,
nach ablauf makro2 wieder frage ob makro3 laufen soll,
sonst abbruch usw.

1.frage: wie rufe ich ein private sub() auf, wo der makro in tabblatt. von modul aus
2.frage: soll makro 1 laufen ja/nein -> soll makro2 laufen...

dank im voraus
gruss




Anzeige

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

Betreff
Datum
Anwender
Anzeige
Re: von modul private sub() aufrufen
04.02.2003 02:30:17
Nepumuk

Hallo Mehmet,
1. wenn du ein Makro als Private deklarierst, dann kann es nur noch von einem anderen Makro aufgerufen werden. Also brauchst du wenigstens eines das als Public deklariert ist.
2. vor dem End Sub eine MsgBox. So z.B.

If MsgBox("Soll jetzt Makro 2 laufen.", 36, "Abfrage") = 6 Then Call Makro2

Gruß
Nepumuk

Anzeige
Re: von modul private sub() aufrufen
04.02.2003 02:37:15
mehmet

dank dir für deine prompte antwort

zu pkt 1:
muss ich dann dem makro1 sagen
...
call tabname.publicmakroname
...
so gehts leider nicht, hatte es bereits probiert

zu pkt 2:
gibt es hier eine else anweisung, was ganz zum schluss kommt,
oder kann ich den else einfach weglassen.

dank dir
gruss

Anzeige
Re: von modul private sub() aufrufen
04.02.2003 02:51:44
Nepumuk

Hallo Mehmet,

Beispiel:

Public Makro1()
.
.
If MsgBox("Soll jetzt Makro 2 laufen.", 36, "Abfrage") = 6 Then Call Makro2
End Sub

Private Makro2()
.
.
If MsgBox("Soll jetzt Makro 3 laufen.", 36, "Abfrage") = 6 Then Call Makro3
End sub

Private Makro3()
.
.
End sub

Du könntest natürlich ein Else reinsetzen wenn du noch eine andere Abfrage einbaust. Aber so wie es jetzt ist, wird beim klick auf Ja das nächste Makro ausgeführt und bei Nein ist Ende.
Gruß
Nepumuk


Anzeige
Re: von modul private sub() aufrufen
04.02.2003 02:59:31
Nepumuk

Hallo Mehmet,
du kanns die Abfrage aber natürlich auch weglassen wenn es automatisch gehen soll. Dann schreibs du einfach:

Public Makro1()
.
.
Call Makro2
End Sub

Private Makro2()
.
.
Call Makro3
End Sub

Private Makro3()
.
.
End Sub

Gruß
Nepumuk

Anzeige
dank dir
04.02.2003 03:00:55
mehmet

gruss

;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Private Subs in Excel VBA effektiv nutzen


Schritt-für-Schritt-Anleitung

Um ein Private Sub in Excel VBA aufzurufen, befolge diese Schritte:

  1. Deklaration der Subs: Stelle sicher, dass mindestens eine deiner Subs als Public deklariert ist, damit sie von anderen Modulen oder Subs aus aufgerufen werden kann.

    Public Sub Makro1()
       ' Code für Makro1
    End Sub
    
    Private Sub Makro2()
       ' Code für Makro2
    End Sub
  2. Aufruf der Private Sub: Verwende Call, um eine Private Sub aus einer Public Sub heraus aufzurufen. Zum Beispiel:

    If MsgBox("Soll jetzt Makro 2 laufen?", vbYesNo, "Abfrage") = vbYes Then
       Call Makro2
    End If
  3. Abfragen implementieren: Du kannst mehrere Makros nacheinander abfragen, indem du die oben beschriebene Struktur wiederholst.


Häufige Fehler und Lösungen

  • Fehler: "Sub oder Funktion nicht definiert"

    • Lösung: Stelle sicher, dass die Private Sub im gleichen Modul oder in einem zugänglichen Modul deklariert ist.
  • Fehler: Makros werden nicht in der gewünschten Reihenfolge ausgeführt.

    • Lösung: Überprüfe die Logik deiner If-Abfragen und stelle sicher, dass die Call-Befehle korrekt platziert sind.

Alternative Methoden

Wenn du eine Private Sub aus einem anderen Modul aufrufen möchtest, kannst du diese Methoden verwenden:

  • Modulreferenz: Wenn du eine Public Sub in einem Modul hast, kannst du sie einfach aufrufen:

    Call ModulName.PublicMakro
  • Direkter Aufruf: Du kannst auch direkt auf Public Subs zugreifen, ohne Call zu verwenden. Zum Beispiel:

    ModulName.PublicMakro

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du Private Subs in Excel VBA nutzen kannst:

Public Sub HauptMakro()
    Call Makro1
End Sub

Private Sub Makro1()
    If MsgBox("Soll jetzt Makro 2 laufen?", vbYesNo, "Abfrage") = vbYes Then
        Call Makro2
    End If
End Sub

Private Sub Makro2()
    MsgBox "Makro 2 wird jetzt ausgeführt!"
    If MsgBox("Soll jetzt Makro 3 laufen?", vbYesNo, "Abfrage") = vbYes Then
        Call Makro3
    End If
End Sub

Private Sub Makro3()
    MsgBox "Ende der Ausführung!"
End Sub

Tipps für Profis

  • Verwende Public für häufig genutzte Makros: Wenn mehrere Module auf ein Makro zugreifen müssen, deklariere es als Public, um den Zugriff zu erleichtern.

  • Strukturierung: Halte deine Makros gut strukturiert und dokumentiert, um die Wartbarkeit zu erhöhen.

  • Debugging: Nutze die Debugging-Tools in Excel VBA, um sicherzustellen, dass deine Logik und Abfragen korrekt funktionieren.


FAQ: Häufige Fragen

1. Wie kann ich ein Private Sub aus einem anderen Modul aufrufen? Du kannst Private Subs nicht direkt aus einem anderen Modul aufrufen. Stelle sicher, dass das aufrufende Makro Public ist.

2. Ist es notwendig, Call zu verwenden? Nein, es ist nicht zwingend erforderlich, Call zu verwenden. Du kannst auch einfach den Namen der Sub aufrufen, um sie auszuführen.

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