Makro aus einer anderen Tabelle aufrufen

Hallo,

ich stehe mal wieder vor einem Problem:
Ich möchte mit einem makro, das in Tabellenblatt „Verwaltung“ steht, ein makro in Tabellenblatt „A-B“ aufrufen (Im VBA-Projekt steht der name Tabelle1 (A-B)). Alle Möglichkeiten, die ich bisher ausprobierte, schlugen fehl:

Call Tabelle1.CommandButton1_click
Call Sheets(„A-B“).CommandButton1_click

Es kommt immer die Fehlermeldung „Index außerhalb des gültigen Bereichs“. Die Methode CommandButton1_click() ist public.

Habt Ihr ne Idee?

Gruß Achim

die Fehlermeldung nicht „Index außerhalb des gültigen bereichs“, sondern:

laufzeitfehler 1004

Anwendungs- oder Objektdefinierter Fehler

Hallo, Achim!

Zum ersten: Muss das Makro im Code des Tabellenobjektes liegen? Oder wäre es nicht geschickter, es in ein normales Modul auszulagern? Die Tatsache, dass Du das Makro offenbar aus mehreren Tabellenblättern heraus aufrufst und es daher Public ist, spricht dafür.

ich stehe mal wieder vor einem Problem:
Ich möchte mit einem makro, das in Tabellenblatt „Verwaltung“
steht, ein makro in Tabellenblatt „A-B“ aufrufen (Im
VBA-Projekt steht der name Tabelle1 (A-B)). Alle
Möglichkeiten, die ich bisher ausprobierte, schlugen fehl:
Call Tabelle1.CommandButton1_click
Call Sheets(„A-B“).CommandButton1_click

Du hast Dir offensichtlich eine Schaltfläche in die Tabelle gepackt? Diese hat keinen eigenen Code, sondern Du weist ihr ein Makro zu. Genau dieses Makro kannst Du dann auch aus dem anderen Sheet aufrufen, also z. B.

Call Tabelle1.Testmakro

Aber wie gesagt: Ich würde das eh in ein Modul auslagern…

Gruß, Manfred

Hallo Manfred,

vielen dank für Deine Tipps, ich habe den Fehler aber mittlerweile gefunden. Da mit dem makro unter anderem eine msgBox aufgerufen wird, musste ich das tabellenblatt vor dem Auruf ersteinmal mit Tabelle1.Activate aktivieren.

Gruß Achim

vielen dank für Deine Tipps, ich habe den Fehler aber
mittlerweile gefunden. Da mit dem makro unter anderem eine
msgBox aufgerufen wird, musste ich das tabellenblatt vor dem
Auruf ersteinmal mit Tabelle1.Activate aktivieren.

Hi Achim,

grundsätzlich würde ich auch immmer, wie schon Manfred sagte, normale Makros in StandardModule setzen.
In Modul von Tabelle1 dann, sofern es einen CB mit dem Namen CommandButton1 gibt dann

Sub CommandButton1_Click()
Call MakroX
End Sub

Irgendwo Call CommandButton1_Click einzubauen sah ich noch nie, wenn dann Call MakroX, nagut, wenns klappt.

Und, das der Aufruf einer MsgBox mit dem aktiven Tabellblatt etwas zu hat glaube ich erstmal nicht.

Aber gut, never touch a running system, wenn’s so läuft… :smile:

Gruß
Reinhard