Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen

Makro über anderes Makro starten | Herbers Excel-Forum


Betrifft: Makro über anderes Makro starten von: Chris
Geschrieben am: 20.11.2009 13:57:28

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?

  

Betrifft: AW: Makro über anderes Makro starten von: Rudi Maintaire
Geschrieben am: 20.11.2009 14:08:39

Hallo,
einfach die Makros aufrufen.

Private Sub CommandButton1_Click()
  Makro1
  Makro2
  Makro3
  Makro4
End Sub

Gruß
Rudi


  

Betrifft: AW: Makro über anderes Makro starten von: Chris
Geschrieben am: 20.11.2009 14:20:58

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?


  

Betrifft: AW: Makro über anderes Makro starten von: Rudi Maintaire
Geschrieben am: 20.11.2009 14:26:51

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


  

Betrifft: AW: Makro über anderes Makro starten von: Chris
Geschrieben am: 20.11.2009 14:58:51

Klappt. Danke!


  

Betrifft: AW: Makro über anderes Makro starten von: Björn B.
Geschrieben am: 20.11.2009 14:30:55

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.


  

Betrifft: AW: Makro über anderes Makro starten von: Chris
Geschrieben am: 20.11.2009 15:00:25

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


Beiträge aus den Excel-Beispielen zum Thema "Makro über anderes Makro starten"