Clever-Excel-Forum

Normale Version: Mehrere Makros automatisch starten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Moin zusammen,
wie kann ich diverse Makros mittels Button starten?

Ich habe bereits einiges aus dem Netz dazu gefunden, aber irgendwie funktioniert das alles nicht.

Mein letzter Versuch:

Sub Button7_Click()
   
    Call Start_Clean        (Start_Clean und Start_Repair sind die Makros)
    Call Start_Repair
   
End Sub
Hi,

und was genau funktioniert da jetzt nicht?
Verzichte in VBA auf 'select' "Activate' and 'Call'


Code:
Sub Button7_Click()
  Start_Clean
  Start_Repair
End Sub
Select und Activate - klar. Aber magst Du mir/uns erklären, weshalb Call bei Dir auf der No-Go-Liste steht?
Hi Boris,

das sagt MS:


Zitat:Sie müssen das Call-Schlüsselwort beim Aufrufen einer Prozedur nicht verwenden. Wenn Sie das Call-Schlüsselwort jedoch verwenden, um eine Prozedur aufzurufen, die Argumente erfordert, muss argumentlist in Klammern eingeschlossen werden. Wenn Sie das Call-Schlüsselwort weglassen, müssen Sie auch die Klammern um argumentlist weglassen. Wenn Sie eine Call-Syntax verwenden, um eine systeminterne oder eine benutzerdefinierte Funktion aufzurufen, wird der Rückgabewert der Funktion verworfen.
Hi Edgar,

ich weiß, dass Call nur optional ist. Wenngleich ich hier keine Argumente sehe, ist es doch logisch, dass man diese - sofern vorhanden - mit Call klammern muss.
Ist doch das Selbe wie bei:

Code:
MsgBox "Hallo"

Wenn man den Rückgabewert möchte, muss es lauten:

Code:
If MsgBox("Hallo", vbYesNo) = vbYes Then

Das beantwortet aber nicht meine Frage.
Moin,
danke für die Diskussion und Erklärungen, hat dennoch nicht geholfen.

Ich habe folgendes wie angegeben getestet:

Sub Button7_Click()
   
    Start_Clean
    Start_Repair
   
End Sub


Ich habe diesen Code unter meinem Code gehangen und in ein separates Modul eingefügt. Jeweils das Makro dem Button7 zugewiesen und dann kommt eine Fehlermeldung (siehe Bild).
Fang mal an mit VBA Grundlagen:

Ein Prozedur (Makro) <> macromodule
Moin Björn,

kann das sein, dass Deine beiden Makros in Modulen liegen, die den gleichen Namen tragen? Darauf deutet nämlich die Fehlermeldung hin. In diese Falle bin auch schon getappt und habe mich anschließend doof gesucht. Seither verwende ich für alles: Variablen, Userform, Modulnamen usw. immer Bezeichner mit einem erkennbaren Präfix, was das versehentliche Verwenden von geschützten VBA-Begriffen vermeidet.

In Deinem Beispiel:  Module heißen bei mir modStart_Clean. Das darin enthaltene Makro(Sub) darf dann gerne Start_Clean heißen.
Eine kleine Liste meiner persönlichen Nomenklatur findest Du hier. Sie orientiert sich an der sog. Ungarischen Notation.

@Boris: Ob man Makros mit oder ohne Call aufruft, macht (außer den Klammern für Parameter) keinen Unterschied. Man hat mit Call aber den Vorteil, dass der Code klarer wird. Als Alternative nutze ich gelegentlich ein Aufruf nach diesem Schema: modStart_Clean.StartClean. Das hat beim Coden den gleichen Vorteil wie das z.B. in Tabellen vorangestellte Me.: Der VBE-Autosense bietet die vorhandenen Items direkt an. Von snb ist dazu keine Antwort zu erwarten. Das wäre zu viel Text für ihn. Es war schon die Differenzierung zwischen Select und Select Case too much ... Wink

Schöne Grüße!
Noch schlimmer ist, daß diese Webpage https://excelformeln.herber.de/ nog immer 7 oder mehr 'dead links' hat.
Seiten: 1 2 3