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

Forumthread: Private Sub in mehreren Tabellen starten

Private Sub in mehreren Tabellen starten
09.10.2006 15:02:34
Walter
Liebe Excel Fans,
ich habe eine Datei in der in jeder Tabelle das gleiche private sub makro enthalten ist.
Wie kann ich aus dem Modul heraus, das Makro für alle Tabellen starten?
VG
Walter
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Private Sub in mehreren Tabellen starten
09.10.2006 15:08:30
Stefan
Hallo Walter,
"Private" Sub's sind nur aus demselben Modul heraus startbar... also solltest Du's entweder "Public" machen (wobei ich denke dass Du Gruende hast das nicht zu tun...) oder Du schreibst in jedes Modul eine Starter Prozedur wie
Public

Sub Makro_starter
Mein

Sub 'Der Name deines Private Sub's
End Sub

das Du dann von anderen Modulen aus aufrufen kannst.
Wobei das a) ungetested ist und b) vermutlich denselben Effekt haette wie das originale auf Public zu setzen...
Schoene Gruesse
Stefan
Anzeige
AW: Private Sub in mehreren Tabellen starten
09.10.2006 16:01:39
Walter
Danke Stefan, aber wenn ich in JEDEM Modul = in JEDER Tabelle ein Makro schreiben soll, dann kann ich doch die Privat Sub eh gleich manuell starten für jede Tabelle, oder ?
Wieso kann ich nicht für jede in der Datei enthaltene Tabelle das dort enthaltene Makro Private Sub ... mit Hilfe eine Schleife aufrufen ?
Anzeige
AW: Private Sub in mehreren Tabellen starten
09.10.2006 18:03:00
Walter
Wollte noch mal nachhaken ob mir jemand helfen kann, da ich das Problem bis morgen gern gelöst hätte.
Vielen Dank und liebe Grüße
Walter
AW: Private Sub in mehreren Tabellen starten
09.10.2006 18:47:46
Stefan
Hallo Walter,
Jetzt hab ich gerade eine ellenlange Antwort formuliert bezueglich "Privat" und "Public", und bei der Ueberpruefung festgestellt dass das was Du versuchst doch ohne Probleme funktioniert (auch wenns den Erklaerungen der Excel Hilfe meiner Meinung nach voellig wiederspricht).
Der folgende Code ruft nacheinander das Sub_ "MeinMakro", das in allen Arbeitsblaettern vorhanden sein muss, auf, egal ob "Private" oder "Public":

Sub Aufruf()
Dim mySheet As Worksheet
Dim myString As String
For Each mySheet In ThisWorkbook.Sheets 'Schleife durch alle Arbeitsblaetter
myString = mySheet.Name & ".MeinMakro" 'Generierung eines Strings der Form Arbeitsblatt.Makroname
Run myString 'Aufruf Deines Makros
Next
End Sub

Ich hoffe das hilft!
Schoene Gruesse
Stefan
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
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

Private Subs in mehreren Tabellen starten


Schritt-für-Schritt-Anleitung

Um ein Private Sub in mehreren Tabellen gleichzeitig zu starten, kannst du den folgenden VBA-Code verwenden. Dieser Code durchläuft alle Arbeitsblätter in deiner Excel-Datei und ruft das gewünschte Makro auf:

Sub Aufruf()
    Dim mySheet As Worksheet
    Dim myString As String
    For Each mySheet In ThisWorkbook.Sheets ' Schleife durch alle Arbeitsblätter
        myString = mySheet.Name & ".MeinMakro" ' Generierung eines Strings der Form Arbeitsblatt.Makroname
        Run myString ' Aufruf Deines Makros
    Next
End Sub

Ersetze MeinMakro mit dem Namen deines Private Sub, das in allen Arbeitsblättern vorhanden sein muss. Dieses Vorgehen ist besonders nützlich, wenn du das gleiche Private Sub in mehreren Tabellen hast und es nicht manuell für jede Tabelle aufrufen möchtest.


Häufige Fehler und Lösungen

Fehler: Das Private Sub wird nicht gefunden.
Lösung: Stelle sicher, dass das Private Sub in allen Arbeitsblättern den gleichen Namen hat.

Fehler: Es wird eine Fehlermeldung angezeigt, dass das Sub nicht aufgerufen werden kann.
Lösung: Überprüfe, ob das Sub als Public deklariert ist, wenn du von außerhalb des Arbeitsblatts darauf zugreifen möchtest.


Alternative Methoden

Falls du keine Schleife verwenden möchtest, kannst du auch überlegen, das Private Sub in ein Public Sub umzuwandeln. So kannst du es einfacher von anderen Modulen aus aufrufen:

Public Sub MeinMakro()
    ' Dein Code hier
End Sub

Denke daran, dass dies die Sichtbarkeit des Makros ändert und es von anderen Modulen aufgerufen werden kann. Eine weitere Alternative wäre, separate Sub-Prozeduren in jedem Modul zu erstellen, die das Private Sub aufrufen.


Praktische Beispiele

Hier sind einige praktische Anwendungen für das oben genannte Codebeispiel:

  1. Datenanalyse: Wenn du verschiedene Datenblätter hast, die mit dem gleichen Makro bearbeitet werden müssen, kannst du es schnell für alle auf einmal ausführen.
  2. Formatierungen: Wenn du beispielsweise eine bestimmte Formatierung auf alle Tabellen anwenden möchtest, ist dieser Ansatz sehr effizient.

Tipps für Profis

  • Verwende Module: Überlege, deine Private Subs in Module auszulagern, wenn du sie von mehreren Stellen aufrufen möchtest. Dies kann helfen, den Code übersichtlicher zu gestalten.
  • Dokumentation: Kommentiere deinen Code gut, damit du später beim Lesen der Private Subs nicht vergisst, was sie tun.
  • Debugging: Nutze die Debugging-Tools von Excel VBA, um sicherzustellen, dass dein Code fehlerfrei läuft.

FAQ: Häufige Fragen

1. Kann ich ein Private Sub von einem anderen Modul aus aufrufen?
Nein, ein Private Sub kann nur innerhalb des Moduls aufgerufen werden, in dem es definiert ist. Du kannst jedoch den Sub als Public deklarieren, um ihn von anderen Modulen aus zugänglich zu machen.

2. Was ist der Unterschied zwischen einem Public Sub und einem Private Sub?
Ein Public Sub kann von überall in der Excel-Arbeitsmappe aufgerufen werden, während ein Private Sub nur innerhalb des Moduls, in dem es definiert ist, aufgerufen werden kann.

3. Wie kann ich sicherstellen, dass mein Private Sub in allen Arbeitsblättern vorhanden ist?
Du kannst den Code von einem Arbeitsblatt in die anderen kopieren oder ein gemeinsames Modul verwenden, um sicherzustellen, dass die gleiche Funktionalität überall verfügbar ist.

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