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

Forumthread: Alle Makros nacheinander ausführen

Alle Makros nacheinander ausführen
11.08.2022 13:25:31
Richard
Hallo zusammen,
ich habe in jedem Tabellenblatt ein Makro......... Da wir über eine größere Anzahl an Tabellenblättern & Makros reden, möchte ich nicht jedes Makro per Call aufrufen.
Wie kann ich alle Makros nacheinander laufen lassen bis alle einmal durch sind?
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Alle Makros nacheinander ausführen
11.08.2022 13:29:57
Rudi

möchte ich nicht jedes Makro per Call aufrufen.
musst du aber.

ich habe in jedem Tabellenblatt ein Makro
du meinst aber keine Event-Prozeduren, oder?
Gruß
Rudi
AW: Alle Makros nacheinander ausführen
12.08.2022 00:44:04
oraculix
Nicht getestet
Servus!
Erstelle einen Commandbutton in Deiner Tabelle1 Tabelle.(Commandbutton1)
Alle Makros die Du ausführen möchtest müssen in einem Modul sein!!!!! (im VBA Editor)
Dann gibst Du dem Commandbutten1 den Befehl mit Call, das er folgende Makros aufrufen soll!!!!
Dieses Makro muss in die Tabelle1 des Tabellenblattes (im VBA Editor)

Private Sub CommandButton1_Click()
Call Makro1 'Die Makronamen müssen mit Deinem Macrnamen Übereinstimmen, also anpassen!!!
Call Macro 2
Call Macro3 ' Beliebig viele Makros eingeben
End Sub
Gruß
Oraculix
Anzeige
AW: Alle Makros nacheinander ausführen
12.08.2022 10:29:44
Richard
Hi,
also in jedem Tabellenblatt ist ein Makro, was sich für dieses Tabellenblatt spezifische Daten holt und diese reinkopiert.
Für die Webabfrage kann ich mit diesem VBA-Code diese hintereinander ausführen.....also muss es doch auch möglich sein so etwas für Makros durchzuführen.....

Public Sub Daten_aktualisieren()
Dim Current As Worksheet
Dim qt As QueryTable
For Each Current In Worksheets
'MsgBox Current.Name
If Current.QueryTables.Count > 0 Then
For Each qt In Current.QueryTables
qt.Refresh (BackgroundQuery)
Next
End If
Next
End Sub

Anzeige
AW: Alle Makros nacheinander ausführen
15.08.2022 06:50:54
Marc
Nur als Hinweis,
sie müssen NICHT alle in einem Modul sein. Du kannst sie , wenn du sie von private auf public setzt auch übergreifend aufrufen. Ob und wie weit das Sinn macht, muss jeder für selbst entscheiden..
durch das Public wird die Prozedur allgemein verfügbar im Projekt.. Nachteil ist, falls spezifische TextFelder, Listen etc die in Userformen angesprochen und gefüllt werden muss die Userform direkt mit angesprochen werden und kann nicht allgemein genutzt werden... zum Beispiel:
statt label_test = "Inhalt"
muss dann z.B. stehen:
UF_Test.label_test = "Inhalt"
Anzeige
AW: Alle Makros nacheinander ausführen
14.08.2022 06:35:14
Oberschlumpf
Hi Richard
und um was für Makros genau handelt es sich?
Zeig mal bitte per Upload eine Bsp-Datei mit mehreren Tabellenblättern und mit eben mind. 1 Makro pro Tabellenblatt.
Und dann beschreib bitte auch, wann genau alle Makros ausgeführt werden sollen - und ob das wiederholt werden soll - und wenn ja, wann soll wiederholt werden?
Ciao
Thorsten
Anzeige
AW: Alle Makros nacheinander ausführen
14.08.2022 15:21:02
Richard
Hi,
in jedem Tabellenblatt ein Makro mit diesem Aufbau (lediglich die Adresse ändert sich):

Function OpenUrl(sURL As String, InFireFox As Boolean) As Integer
If InFireFox Then
OpenUrl = Shell("C:\Programme\Mozilla Firefox\firefox.exe " & sURL)
End If
End Function

Sub HellaKurse()
intResult = OpenUrl("https://www.onvista.de/aktien/handelsplaetze/Hella-Aktie-DE000A13SX22", True)
Application.Wait Now + TimeSerial(0, 0, 3)
Application.SendKeys "^a"
Application.Wait Now + TimeSerial(0, 0, 3)
Application.SendKeys "^c"
Application.Wait Now + TimeSerial(0, 0, 3)
Worksheets("1HellaKurs").Visible = True
Worksheets("1HellaKurs").Select
Range("A1").Select
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False
Application.SendKeys "^{F4}", True
Worksheets("1HellaKurs").Visible = False
End Sub
Infolgedessen möchte ich halt nicht jedes einzelne makro anklicken oder in einem Makro 100 Call-Aufrufe haben, die ich einzeln benennen muss.....
Die Idee ist wie bei dem vorherigen Code für die Webabfrage dass alle offenen Markos nach einander einfach ausgeführt werden sollen.
Anzeige
AW: Alle Makros nacheinander ausführen
14.08.2022 20:27:26
Oberschlumpf
und wo is Bsp-Datei mit allem, was erforderlich is?
AW: Alle Makros nacheinander ausführen
17.08.2022 16:15:15
Rudi
Hallo,
soweit ich sehen kann, machen die Makros doch alle das gleiche.
Schreibe deine URLs und die zugehörigen Zielblätter in eine Tabelle (Links)
A: URL, B: Namen
In ein Modul:

Sub BankKurse()
Dim rng As Range
With Worksheets("Links")
For Each rng In .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp))
intResult = OpenUrl(rng.Value, True)
Application.Wait Now + TimeSerial(0, 0, 3)
Application.SendKeys "^a"
Application.Wait Now + TimeSerial(0, 0, 3)
Application.SendKeys "^c"
Application.Wait Now + TimeSerial(0, 0, 3)
With Worksheets(rng.Offset(, 1))
.Range("A1").PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False
End With
Next rng
End With
End Sub
Function OpenUrl(sURL As String, InFireFox As Boolean) As Integer
If InFireFox Then
OpenUrl = Shell("C:\Programme\Mozilla Firefox\firefox.exe " & sURL)
End If
End Function
Gruß
Rudi
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
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

Alle Makros in Excel nacheinander ausführen


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf VBAProject (DeineDatei.xlsm) und wähle Einfügen -> Modul.

  3. Füge den Code ein: Schreibe den folgenden Code in das Modul:

    Sub AlleMakrosAusfuehren()
       Call Makro1
       Call Makro2
       Call Makro3
       'Füge hier weitere Makros hinzu
    End Sub
  4. Erstelle einen CommandButton: Gehe zu Excel, wähle die Entwicklertools und füge einen CommandButton auf deinem Arbeitsblatt hinzu.

  5. Verknüpfe den Button mit dem Makro: Doppelklicke auf den Button und füge den Aufruf des neuen Makros hinzu:

    Private Sub CommandButton1_Click()
       AlleMakrosAusfuehren
    End Sub
  6. Testen: Klicke auf den Button, um alle Makros nacheinander auszuführen.


Häufige Fehler und Lösungen

  • Fehler: "Makro nicht gefunden"
    Stelle sicher, dass die Makronamen exakt mit den Namen in deinem Code übereinstimmen.

  • Fehler: "Ungültiger Prozeduraufruf"
    Überprüfe, ob die Makros korrekt definiert sind und keine private Sub-Prozeduren sind, wenn du sie von einem anderen Modul aufrufen möchtest.

  • Fehler: Keine Reaktion nach dem Klicken des Buttons
    Vergewissere dich, dass der CommandButton korrekt mit dem Sub AlleMakrosAusfuehren verknüpft ist.


Alternative Methoden

Eine weitere Möglichkeit, mehrere Makros in Excel nacheinander auszuführen, besteht darin, die Makros in einer Schleife zu organisieren. Beispielsweise kannst du eine Liste von Makronamen in einem Array speichern und dann eine Schleife verwenden, um sie auszuführen:

Sub AlleMakrosMitArrayAusfuehren()
    Dim Makros() As Variant
    Dim i As Integer

    Makros = Array("Makro1", "Makro2", "Makro3") 'Füge hier weitere Makros hinzu

    For i = LBound(Makros) To UBound(Makros)
        Application.Run Makros(i)
    Next i
End Sub

Praktische Beispiele

Beispiel: Angenommen, du hast drei Makros, die Daten von verschiedenen URLs abrufen. Du kannst sie in einem einzigen Makro zusammenfassen:

Sub DatenVonURLsAbrufen()
    Call AbrufVonURL1
    Call AbrufVonURL2
    Call AbrufVonURL3
End Sub

Wenn du die URLs in einer Excel-Tabelle hast, kannst du auch die oben genannte Schleifenmethode verwenden, um sie nacheinander zu verarbeiten.


Tipps für Profis

  • Modularität: Halte deine Makros modular, sodass du nur die Änderungen in den spezifischen Modulen vornehmen musst, ohne den Hauptaufruf zu beeinflussen.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung in deinen Makros, um sicherzustellen, dass das gesamte Skript nicht bei einem Fehler abbricht.

    On Error Resume Next
    'Dein Code hier
    On Error GoTo 0
  • Dokumentation: Kommentiere deinen Code gut, um die Nachvollziehbarkeit zu gewährleisten, besonders wenn du mehrere Makros nacheinander ausführen möchtest.


FAQ: Häufige Fragen

1. Muss ich alle Makros in einem Modul haben?
Nein, du kannst Makros in verschiedenen Modulen haben, solange sie als Public deklariert sind.

2. Wie kann ich sicherstellen, dass alle Makros in der richtigen Reihenfolge ausgeführt werden?
Du kannst die Makros in der Reihenfolge aufrufen, in der sie ausgeführt werden sollen, oder die Schleifenmethode verwenden, um die Reihenfolge festzulegen.

3. Was ist der Unterschied zwischen Call und Application.Run?
Call wird verwendet, um Subroutinen direkt aufzurufen, während Application.Run es dir ermöglicht, Makros anhand ihres Namens als String aufzurufen.

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