Anzeige
Archiv - Navigation
1880to1884
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
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

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

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige