HERBERS Excel-Forum - das Archiv
Makro über anderes Makro starten
Chris

Hi zusammen!
In meiner Excel-Mappe habe ich mehrere Sheets (Sheet2 bis Sheet4), auf dem sich jeweils ein Button befindet. Per Knopfdruck importiert ein dem jeweiligen Button hinterlegtes Makro Quelldaten in das Sheet.
Je nach Verwendung meiner Excel-Mappe macht es Sinn, für jedes einzelne Sheet einen eigenen Button zu haben.
Aber ich könnte auch noch einen globalen Button im Sheet 1 (sozusagen die Homepage der Arbeitsmappe) gebrauchen, der per Knopdruck alle anderen Buttons bzw. alle dort hinterlegten Makros ausführt.
Wenn ich das aufzeichnen will, wird im VBA-Code das Drücken der Buttons nicht dargestellt. Wie könnte man das selbst programmieren?

AW: Makro über anderes Makro starten
Rudi

Hallo,
einfach die Makros aufrufen.
Private Sub CommandButton1_Click()
Makro1
Makro2
Makro3
Makro4
End Sub

Gruß
Rudi
AW: Makro über anderes Makro starten
Chris

Bei mir heißen die Makros in den Sheets 2 bis 4 alle
<pre>Private Sub CommandButton1_Click()
Wenn ich den Namen "CommandButton1_Click()" ändere, greift der jeweilige Button im Sheet nicht mehr darauf zu.
Und für den globalen Button kann ich dann doch nicht
Private Sub CommandButton1_Click()
CommandButton1_Click()
CommandButton1_Click()
CommandButton1_Click()
End Sub
schreiben, oder?
AW: Makro über anderes Makro starten
Rudi

Hallo,
dann lagere die Codes als normale Prozedur in ein Modul aus und ruf sie in der Click-Prozedur auf.
Private Sub CommandButton1_Click()
Makro1
End Sub
Gruß
Rudi
AW: Makro über anderes Makro starten
Chris

Klappt. Danke!
AW: Makro über anderes Makro starten
Björn

Hallo,
Allgemein wird "Makro" für Prozedur verwendet, so hat es Rudi auch verstanden und sein Code stimmt.
Du möchtest aber keine Prozedur aufrufen, sondern einen Knopf drücken.
Das geht so:
Worksheets("Sheets2").CommandButton1 = True
Aber das ist sehr schlecht programmiert. (Nicht böse gemeint, Du bist wahrscheinlich Anfänger, und diese Fehler macht jeder).
Am besten, Du gibst jedem Steuerelement einen Namen, dass du das nachher sauber zuordnen kannst.
Also für Commandbuttons nimmt man normalerweise am Anfang "cmd" und danach einen aussagekräftige Erweiterung, z.B. die Funktion des Buttons. Also z.B. ein Abbrechen -Button würde dann "cmdAbbrechen" heißen. Dann weißt du immer, welcher Knopf das ist, ohne nachzuschauen.
Wer weiß schon, was CommandButton13 auf Sheet 5 macht? cmdKopieren versteht man eher. Verstanden?
Nächster Schritt.
Es ist meistens besser, im Button selbst nicht zu viel Code reinzupacken.
Besser wäre, den Code in eine Prozedur auszulagern und diese in einem allgemeinen Modul zu speichern.
Somit brauchst du im Button nur noch die Prozedur aufrufen.
Call Prozedurname

Dann kannst du auch aus anderen Sheets direkt auf den Code zugreifen.
So, hoffe, ich habe Dir damit geholfen.
Gruß
Björn B.
AW: Makro über anderes Makro starten
Chris

Jep, vielen Dank für die Erklärung!