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

Forumthread: 2 Makros mit einem Button auslösen?

2 Makros mit einem Button auslösen?
12.05.2022 14:36:05
Andreas
Hi zusammen,
habe 2 ziemlich große Codes und die sollen aber eigentlich beide beim Auslösen von ComandButton1 aktiviert werden.
Geht sowas?
Gruß Andreas
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 2 Makros mit einem Button auslösen?
12.05.2022 14:42:01
Daniel
HI
naja, entweder du schreibst beide Codes in ein Makro und fügst diesen Gesamtcode dann bei CommandButton1_Click ein.
oder du schreibst jeden Code in ein eigenes Makro und rufst dann vom Commandbutton1 nur diese beiden Makros nacheinander auf.
Gruß Daniel
AW: 2 Makros mit einem Button auslösen?
12.05.2022 15:20:33
Andreas
Hi Daniel,
Danke für deine Rückmeldung.
In 1 Makro schaffe ich das nicht, bin leider ein ziemlicher Anfänger was VBA angeht.
Hab dann also deinen 2ten Vorschlag versucht umzusetzen, das Problem ist aber, dass dieses Makro mit einer Schaltfläche ausgelöst wird und nicht mit einem CommandButton.
Kann man in dem Makro hinterlegen, dass an 2 bestimmten Stellen das Makro was aktuell in CommandButton1 hinterlegt ist (Den Code schick ich mal nicht mit, der ist sehr groß) ausgeführt wird?
Hab mal Fett markiert an welchen Stellen das sein sollte (Ist nicht der ganze Code, der ist leider sehr groß).
Aktuell ist das so, dass man immer nach Auslösen der Schalflächen den CommandButton noch extra aktivieren muss. Das ist blöd...
Wenn du mir irgendwie helfen kannst wäre das super.
Danke und Gruß Andreas
'* Name der Schaltfläche
sSF_Name = ActiveSheet.Shapes(Application.Caller).Name
'* Sicherheitsabfrage
Beep
sFrage = MsgBox("Ist die """ & Mid(sSF_Name, 4, 25) & """ wirklich erledigt?", vbYesNo + vbQuestion, "?")
If sFrage = vbNo Then GoTo ende
'* damit wird eine namensgleich vorhandene Datei ohne Nachfrage überschrieben!
Application.DisplayAlerts = False
'* damit wird die geöffnete Datei im o. a. Pfad & neuem Namen gespeichert
ActiveWorkbook.SaveAs Filename:=sPfad & sFileName & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
'* Sheet "DB" entsperren
'Tab1_DB.Unprotect sKey
Call SchaltflaecheGrün
ende:
'* Sheet "DB" sperren
' If Environ("USERNAME") "1HG" Then Tab1_DB.Protect sKey
End Sub
Sub Status_erledigt()
Dim sZielPfadUndOrdner$, Wkb As Workbook, sQuellOrdner$
On Error GoTo ende
'* Name der Schaltfläche
sSF_Name = ActiveSheet.Shapes(Application.Caller).Name
'* Sicherheitsabfrage
sFrage = MsgBox("Ist die """ & Mid(sSF_Name, 4, 25) & """ wirklich erledigt?", vbYesNo + vbQuestion, "?")
If sFrage = vbNo Then GoTo ende
'* ZielOrdner bestimmen
If sSF_Name = "SF_Versandbereit" Then sZielOrdner = "2 Versandbereit\"
If sSF_Name = "SF_Versandbereit" Then Range("AR2") = "Offen"
An dieser Stelle soll das Makro von CommandButton1 aktiviert werden
If sSF_Name = "SF_Versendet" Then sZielOrdner = "3.2 BL Versand\"
If sSF_Name = "SF_Versendet" And [Cell_Empfaenger] = "US" Then sZielOrdner = "3.1 ISF\"
If sSF_Name = "SF_Versandt_US" Then sZielOrdner = "3.2 BL Versand\"
If sSF_Name = "SF_Versandt_US" Then Range("AR2") = "Erledigt"
An dieser Stelle soll das Makro von CommandButton1 aktiviert werden
If sSF_Name = "SF_Abgeschlossen" Then
With Sheets("A 1")
If .[L1] = "" Then
sZielOrdner = "4 Abgeschlossen\" & .[C8] & "_" & .[D3] & "_" & .[C7] & "\"
Else
sZielOrdner = "4 Abgeschlossen\" & .[C8] & "_" & .[D3] & "_" & .[C7] & "_" & .[L1] & "\"
End If
End With
End If
Anzeige
AW: 2 Makros mit einem Button auslösen?
12.05.2022 16:03:32
Zwenn
Hallo Andreas,
wie Daniel schon schrieb, kannst Du beide Makros nacheinander aus einem dritten Makro aufrufen. Das funktioniert über den Befehl Call Makroname. Wenn Du den Aufruf des zweiten Makros an Stellen im Code des ersten Makros einbauen willst, geht das mit dem gleichen Befehl.

If sSF_Name = "SF_Versandbereit" Then Range("AR2") = "Offen"
'An dieser Stelle soll das Makro von CommandButton1 aktiviert werden
Call MakronameVomMakroAufCommandButton1
If sSF_Name = "SF_Versendet" Then sZielOrdner = "3.2 BL Versand\"
Viele Grüße,
Zwenn
Anzeige
AW: 2 Makros mit einem Button auslösen?
13.05.2022 09:23:48
Andreas
Hi Zwenn,
da kommt leider eine Fehlermeldung:
Unzuverlässige Verwendung einer Eigenschaft
Woran kann das liegen?
Gruß Andreas
AW: 2 Makros mit einem Button auslösen?
12.05.2022 17:39:31
Yal
Hallo Andreas,
Programmierung für Anfänger: zur jeder Punkt kann eine externe Prozedure gerufen werden. Dann werden alle Anweisungen der gerufene Prozedure durchgeführt und es wird direkt nach dem Aufruf weitergehen.
Teste:

Dim msg As String
Private Sub CommandButton1_Klick()
msg = "1. Mache dies"
Call Abarbeiten1
msg = msg & vbCr & "2. mache das"
Call Abarbeiten2
msg = msg & vbCr & "3. Mache_Schluss"
MsgBox msg
End Sub
Private Sub Abarbeiten1()
msg = msg & vbCr & "Abarbeiten1: Mache_jenes"
End Sub
Private Sub Abarbeiten2()
msg = msg & vbCr & "Abarbeiten2: Mache_was_anderes"
Call Abarbeiten1
End Sub
VG
Yal
Anzeige
AW: 2 Makros mit einem Button auslösen?
13.05.2022 09:22:06
Andreas
Guten Morgen Yal,
dein Code schreibe ich in ein extra Modul oder?
Also das hab ich mal versucht. Hab nur ein Problem hab nochmal nachgeguckt und das eine Modul wird gar nicht durch ein CommandButton ausgelöst sondern durch eine Schaltfläche.
Hab die Zeile in deinem Code dann versucht darauf anzupassen:
Private Sub sSF_Name = "SF_Versandbereit"
Aber das scheint nicht zu funktionieren?
Hier mal der Codeanfang, der auf der Schaltfläche liegt:

'* Name der Schaltfläche
sSF_Name = ActiveSheet.Shapes(Application.Caller).Name
'* Sicherheitsabfrage
Beep
sFrage = MsgBox("Ist die """ & Mid(sSF_Name, 4, 25) & """ wirklich erledigt?", vbYesNo + vbQuestion, "?")
If sFrage = vbNo Then GoTo ende
'* damit wird eine namensgleich vorhandene Datei ohne Nachfrage überschrieben!
Application.DisplayAlerts = False
'* damit wird die geöffnete Datei im o. a. Pfad & neuem Namen gespeichert
ActiveWorkbook.SaveAs Filename:=sPfad & sFileName & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
'* Sheet "DB" entsperren
'Tab1_DB.Unprotect sKey
Call SchaltflaecheGrün
ende:
'* Sheet "DB" sperren
' If Environ("USERNAME")  "1HG" Then Tab1_DB.Protect sKey
End Sub
Sub Status_erledigt()
Dim sZielPfadUndOrdner$, Wkb As Workbook, sQuellOrdner$
On Error GoTo ende
'* Name der Schaltfläche
sSF_Name = ActiveSheet.Shapes(Application.Caller).Name
'* Sicherheitsabfrage
sFrage = MsgBox("Ist die """ & Mid(sSF_Name, 4, 25) & """ wirklich erledigt?", vbYesNo + vbQuestion, "?")
If sFrage = vbNo Then GoTo ende
'* ZielOrdner bestimmen
If sSF_Name = "SF_Versandbereit" Then sZielOrdner = "2 Versandbereit\"
If sSF_Name = "SF_Versandbereit" Then Range("AR2") = "Offen"
An dieser Stelle soll das Makro von CommandButton1 aktiviert werden
If sSF_Name = "SF_Versendet" Then sZielOrdner = "3.2 BL Versand\"
If sSF_Name = "SF_Versendet" And [Cell_Empfaenger] = "US" Then sZielOrdner = "3.1 ISF\"
If sSF_Name = "SF_Versandt_US" Then sZielOrdner = "3.2 BL Versand\"
If sSF_Name = "SF_Versandt_US" Then Range("AR2") = "Erledigt"
An dieser Stelle soll das Makro von CommandButton1 aktiviert werden
If sSF_Name = "SF_Abgeschlossen" Then
With Sheets("A 1")
If .[L1] = "" Then
sZielOrdner = "4 Abgeschlossen\" & .[C8] & "_" & .[D3] & "_" & .[C7] & "\"
Else
sZielOrdner = "4 Abgeschlossen\" & .[C8] & "_" & .[D3] & "_" & .[C7] & "_" & .[L1] & "\"
End If
End With
End If

Anzeige
AW: 2 Makros mit einem Button auslösen?
13.05.2022 09:51:26
Yal
Hallo Andreas,
Du bist an einem Punkt angelangt, wo dein Coding ein Umfang erreicht hat, der ein gewisse Kompetenz erfordert. Und Du hängst mit deinem wissen noch hinterher.
Du hast das Ziel, so schnell wie möglich ein vollständig lauffähigen Code zu haben, aber dieses Ziel widerspricht das Ziel des Lernens, was Zeit erfordert. Es wie Autofahren und Geschwindigkeit erhöhen, ohne sich Zeit genommen zu haben, zu erkünden wie die Bremse funktionieren: es wird schiefgehen. Je höher die Geschwindigkeit, desto grösser die Schaden (es handelt sich um etwas berufliche, oder?)
Den gelieferten Code ist eine reine Dummy. Packt es in einem kompletten neuen Exceldatei. Egal ob Modul oder Arbteitsblatt-Codepane. Ändere den "CommandButton1_Click", ne sorry: "CommandButton1_Klick", in "hier_fängt_alles_an" und starte einmal mit F5 (normales Run), schau Dir genau das Ergebnis an, dann starte die "hier_fäng_alles_an" diesmal mit F8, öffne dabei die lokale Fenster (Ansicht, lokale Fenster), und beobachte wie der Code und der Inhlat der Variablen sich weiterentwickeln. (isolieren und beobachten).
Ohne Grundwissen kommst Du nicht weiter und bist auf Fremdhilfe angewiesen. Wir helfen gern, keine Frage. Aber es kostet Dir viel Zeit und mit fertig gebackene Lösung ist der Lerneffekt immer sehr gering, was dich weiterhin in der Abhängigkeit festhält.
VG
Yal
Anzeige
AW: 2 Makros mit einem Button auslösen?
13.05.2022 16:53:21
Andreas
Hi Yal,
da hast du Recht. Mir ist leider auch bewusst, das ich mit meine Wissen hinterher bin.
Und ja, natürlich fände ich es spitze so schnell wie möglich einen laufenden Code zu haben.
Habe so viele Ideen, was ich noch gerne machen würde und so wenig Zeit =D Und leider auch wenig VBA-Durchblick....
Das Ding in dieser Sache ist halt, das beide meine Codes funktionieren und auch machen was sie sollen.
Hätte eben nur gerne gehabt, dass man diese nicht getrennt, sondern mit einer Aktion auslösen kann.
(Ist was berufliches ja :) und würde einen Ablauf einfach bequemer machen).
Das ist bei 2 so großen Codes sicherlich sehr kompliziert, deshalb dachte ich ich frag mal nach vielleicht schafft das hier einer.
Bis ich das mit meinem Wissensstand selbst schaffen werden, wird noch lange brauchen, wenn es überhaupt irgendwann soweit sein wird.
Du und auch andere hier, habt mir in diesem Forum schon wahnsinnig viel geholfen und bin dafür sehr Dankbar.
Ich arbeite wahnsinnig gerne mit Excel und durch dieses Forum hab ich Mitte 2021 zum ersten mal überhaupt was von VBA gehört und finde es den totalen Wahnsinn, was man damit alles machen kann.
Dein Tipp mit dem Lokalfenster und F8 hat mich letztes mal ja schon (auch wenn ich dadurch nicht den Fehler gefunden hatte) zu einer Lösung gebracht.
Werde das natürlich auch wieder versuchen, auch wenn ich leider nicht glaube, dass es für mich dadurch möglich sein wird herauszufinden wo und wie ich die beiden Codes verbinden kann.
Für deine Ratschläge bedanke ich mich und wünsche ein schönes Wochenende
Gruß Andreas
Anzeige
AW: 2 Makros mit einem Button auslösen?
13.05.2022 17:17:46
Yal
Dein Aussage "Das ist bei 2 so großen Codes sicherlich sehr kompliziert"
Nein, es ist nicht. Es ist nicht komplizierter als mit einem kleinen Code. Aber das Grundverständnis muss da sein, um zu sehen, wie einfach es ist. Daher meine Idee mit dem Dummy-Code: mit irgendwas bedeutungslos probieren und verstehen. Es kostet nur ein paar Minuten. Die muss man aber nehmen. Dann ist man gewappnet für das Grosses.
Du bist auf dem richtigen Weg. Aber wie gesagt, nehme dich im Acht vor unkontrollierten Geschwindigkeit. Das stolpern ist dann schmerzhafter.
VG
Yal
Anzeige
;

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

Mehrere Makros mit einem Button ausführen in Excel


Schritt-für-Schritt-Anleitung

Um mehrere Makros mit einem Button auszuführen, kannst Du die folgenden Schritte befolgen:

  1. Öffne den VBA-Editor:

    • Drücke Alt + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Erstelle ein neues Modul:

    • Klicke im Menü auf Einfügen und dann auf Modul.
  3. Füge Deine Makros ein:

    • Kopiere die bestehenden Makros, die Du mit dem Button ausführen möchtest, in das neue Modul.
  4. Erstelle ein neues Hauptmakro:

    • Füge ein neues Makro hinzu, das die beiden anderen Makros aufruft. Beispiel:
      Sub HauptMakro()
      Call Makro1
      Call Makro2
      End Sub
  5. Button erstellen:

    • Gehe zurück zu Excel und füge einen Button (Formularsteuerung) hinzu: EntwicklertoolsEinfügenButton (Formularsteuerung).
  6. Makro zuweisen:

    • Klicke mit der rechten Maustaste auf den Button, wähle Makro zuweisen und wähle das HauptMakro aus.
  7. Testen:

    • Klicke auf den Button, um zu überprüfen, ob beide Makros nacheinander ausgeführt werden.

Häufige Fehler und Lösungen

  • Fehler: "Unzuverlässige Verwendung einer Eigenschaft":

    • Ursache: Dieser Fehler tritt häufig auf, wenn Du versuchst, eine Eigenschaft eines Objekts zu verwenden, das nicht existiert oder nicht korrekt referenziert wird.
    • Lösung: Überprüfe die Referenzierung Deiner Variablen und stelle sicher, dass sie korrekt definiert sind.
  • Fehler bei der Button-Zuweisung:

    • Ursache: Das Makro wurde nicht korrekt zugewiesen oder das Makro existiert nicht.
    • Lösung: Stelle sicher, dass das Makro im richtigen Modul vorhanden ist und dass Du es korrekt zugewiesen hast.

Alternative Methoden

Du kannst auch die folgende Methode ausprobieren, um mehrere Makros mit einem Button auszuführen:

  • Verwenden eines "Master"-Makros:
    • Erstelle ein Makro, das die anderen Makros aufruft, und füge es einem Button hinzu. Beispiel:
      Sub MasterMakro()
      Call Makro1
      Call Makro2
      ' Weitere Makros hier hinzufügen
      End Sub

Praktische Beispiele

Hier ist ein einfaches Beispiel, um zu zeigen, wie Du mehrere Makros mit einem Button ausführen kannst:

Sub Makro1()
    MsgBox "Makro 1 wurde ausgeführt."
End Sub

Sub Makro2()
    MsgBox "Makro 2 wurde ausgeführt."
End Sub

Sub HauptMakro()
    Call Makro1
    Call Makro2
End Sub

Wenn Du jetzt auf den Button klickst, wird zuerst das erste Makro und dann das zweite Makro ausgeführt.


Tipps für Profis

  • Modularer Code: Halte Deinen Code modular, indem Du die Einzelmakros in verschiedenen Modulen organisierst. So bleibt Dein Code übersichtlich und leicht wartbar.

  • Fehlerbehandlung: Implementiere On Error GoTo-Anweisungen in Deinen Makros, um Fehler elegant zu behandeln und die Ausführung nicht abrupt zu stoppen.

  • Namen für Makros: Achte darauf, eindeutige und aussagekräftige Namen für Deine Makros zu verwenden, um Verwirrung zu vermeiden.


FAQ: Häufige Fragen

1. Kann ich mehrere Makros mit einem einzigen Button in Excel ausführen?
Ja, Du kannst mehrere Makros mit einem Button ausführen, indem Du ein Hauptmakro erstellst, das die anderen Makros nacheinander aufruft.

2. Wie lege ich ein Makro auf einen Button?
Um ein Excel-Makro auf einen Button zu legen, klicke mit der rechten Maustaste auf den Button, wähle Makro zuweisen und wähle das entsprechende Makro aus der Liste aus.

3. Was mache ich, wenn mein Makro nicht funktioniert?
Überprüfe den Code auf Fehler, stelle sicher, dass alle verwendeten Variablen korrekt deklariert sind und teste die einzelnen Makros separat, um den Fehler einzugrenzen.

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