Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro über anderes Makro starten

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?
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Makro über anderes Makro starten
20.11.2009 14:08:39
Rudi
Hallo,
einfach die Makros aufrufen.
Private Sub CommandButton1_Click()
Makro1
Makro2
Makro3
Makro4
End Sub

Gruß
Rudi
AW: Makro über anderes Makro starten
20.11.2009 14:20:58
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?
Anzeige
AW: Makro über anderes Makro starten
20.11.2009 14:26:51
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
20.11.2009 14:58:51
Chris
Klappt. Danke!
AW: Makro über anderes Makro starten
20.11.2009 14:30:55
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.
Anzeige
AW: Makro über anderes Makro starten
20.11.2009 15:00:25
Chris
Jep, vielen Dank für die Erklärung!
;

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
Anzeige

Infobox / Tutorial

Makro über anderes Makro starten in Excel


Schritt-für-Schritt-Anleitung

Um ein Excel-Makro über ein anderes Makro zu starten, kannst du folgende Schritte befolgen:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul:

    • Klicke im Menü auf Einfügen > Modul.
  3. Schreibe deine Makros:

    • Definiere die Makros, die du aufrufen möchtest, in dem neuen Modul. Beispiel:
    Sub Makro1()
       ' Code für Makro 1
    End Sub
    
    Sub Makro2()
       ' Code für Makro 2
    End Sub
  4. Erstelle einen Button auf deinem Sheet:

    • Wechsle zurück zu Excel und füge einen Button (Formularsteuerelement) hinzu.
  5. Verknüpfe den Button mit einem Makro:

    • Klicke mit der rechten Maustaste auf den Button, wähle Makro zuweisen... und wähle das Makro, das die anderen Makros aufruft, zum Beispiel:
    Sub Button_Click()
       Call Makro1
       Call Makro2
    End Sub
  6. Teste den Button:

    • Klicke auf den Button, um die Makros auszuführen.

Häufige Fehler und Lösungen

  • Fehler: "Makro nicht gefunden"

    • Stelle sicher, dass die Makros im richtigen Modul gespeichert sind und die Namen korrekt sind.
  • Fehler: Button funktioniert nicht

    • Überprüfe, ob der Button mit dem richtigen Makro verknüpft ist.
  • Fehler: "Variable nicht definiert"

    • Achte darauf, dass alle Variablen, die du in deinen Makros verwendest, korrekt deklariert sind.

Alternative Methoden

Wenn du ein Makro in einem anderen Makro aufrufen möchtest, gibt es verschiedene Methoden:

  1. Direktes Aufrufen:

    • Du kannst ein Makro direkt mit dem Namen aufrufen, wie in den vorherigen Beispielen.
  2. Mit Call:

    • Nutze Call, um dein Makro aufzurufen. Zum Beispiel:
    Call Makro1
  3. Makro in Makro aufrufen:

    • Du kannst auch mehrere Makros in einem anderen Makro gruppieren, um sie gemeinsam auszuführen.

Praktische Beispiele

Hier sind einige praktische Beispiele, um das Aufrufen von Makros zu veranschaulichen:

  • Beispiel 1: Mehrere Makros in einem Button:

    Sub GlobalButton_Click()
       Call Makro1
       Call Makro2
       Call Makro3
    End Sub
  • Beispiel 2: Automatisches Importieren von Daten:

    Sub ImportButton_Click()
       Call ImportDaten
       Call DatenVerarbeiten
    End Sub

Tipps für Profis

  • Namen vergeben: Vergib aussagekräftige Namen für deine Makros und Buttons, um die Übersichtlichkeit zu verbessern. Zum Beispiel cmdImportDaten.

  • Debugging nutzen: Verwende den Debugger im VBA-Editor, um Fehler in deinen Makros schnell zu finden.

  • Modularisierung: Lagere komplexe Logik in separate Module aus, um die Wartung zu erleichtern.


FAQ: Häufige Fragen

1. Wie kann ich ein Makro von einem anderen Sheet aufrufen?
Du kannst das Makro einfach mit dem Namen aufrufen, solange es im gleichen Modul oder in einem allgemein verfügbaren Modul definiert ist.

2. Kann ich ein Makro automatisch beim Öffnen der Datei ausführen?
Ja, du kannst ein Makro mit dem Namen Workbook_Open() im ThisWorkbook-Modul erstellen, um es beim Öffnen der Datei auszuführen.

3. Was ist der Unterschied zwischen Call und dem direkten Aufruf eines Makros?
Call ist optional und kann verwendet werden, um den Code leichter lesbar zu machen. Beide Methoden führen zum gleichen Ergebnis.

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