wie kann ich mit einem Makro ein (oder mehrere) anderes Makro ausführen?
Zugleich sollte dieses Makro nicht nur im aktuellen Tabellenblatt, sondern in allen Tabellenblättern der Datei ausgeführt werden.
sub test0()
call test1
call test2
end sub
Sub Test1()
end sub
Sub Test1()
end sub
Hoff das hilft weiter.
Option Explicit
Sub Hauptmakro()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
Untermakro ws
' oder
Call Untermakro(ws)
Next ws
End Sub
Sub Untermakro(wks As Worksheet)
With wks
.Cells(1, 1).Value = Now
.Cells(1, 2).Value = .Name
End With
End Sub
Ob man "Call" hinschreibt oder es weglässt, ist Geschmackssache.
Option Explicit
Sub EinMakro()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
With ws
.Cells(1, 1).Value = Now
.Cells(1, 2).Value = .Name
End With
Next ws
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Sub EinMakro()
Dim sh_Alt As Object, wks As Worksheet
Application.ScreenUpdating = False
Application.EnableEvents = False
On Error GoTo XErr
Set sh_Alt = ActiveSheet
For Each wks In ActiveWorkbook.Worksheets
With wks
.Unprotect
.Range("I:I,K:K,N:O").EntireColumn.Hidden = True
With .Range("A1").Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 12611584
.TintAndShade = 0
.PatternTintAndShade = 0
End With
.Activate
ActiveWindow.Zoom = 75
.Protect DrawingObjects:=True, Contents:=True, _
Scenarios:=True, AllowFiltering:=True
End With
Next wks
sh_Alt.Activate
XErr:
Application.EnableEvents = True
Application.ScreenUpdating = True
Resume XEnd
XEnd:
End Sub
Ich bin jetzt mal für zwei, drei Wochen weg...
Um ein Excel VBA Makro auszuführen, das ein anderes Makro aufruft, folge diesen Schritten:
ALT + F11
, um den VBA-Editor zu öffnen.VBAProject (DeineDatei.xlsm)
klickst und Einfügen
> Modul
wählst.Sub Hauptmakro()
Call Untermakro
End Sub
Sub Untermakro()
MsgBox "Das Untermakro wurde erfolgreich aufgerufen!"
End Sub
Sub HauptmakroAlleBlätter()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Activate
Call Untermakro
Next ws
End Sub
Fehler: "Sub oder Function nicht definiert"
Fehler: "Das Makro kann nicht ausgeführt werden"
Datei
> Optionen
> Trust Center
> Einstellungen für das Trust Center
und aktiviere die Makros.Es gibt verschiedene Möglichkeiten, ein Makro aus einem anderen Makro auszuführen:
Direktes Aufrufen: Du kannst ein Makro direkt durch seinen Namen aufrufen, ohne Call
zu verwenden.
Sub Hauptmakro()
Untermakro
End Sub
Verwendung von Application.Run
: Dies ermöglicht das Aufrufen von Makros, die sich in anderen Arbeitsmappen befinden.
Application.Run "AndereMappe.xlsm!Untermakro"
Hier sind einige praktische Beispiele, die dir zeigen, wie du Makros in verschiedenen Szenarien ausführen kannst:
Sub DatenBearbeiten()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Cells(1, 1).Value = "Daten bearbeitet"
Next ws
End Sub
Sub Hauptmakro()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Select
Call Untermakro
Next ws
End Sub
Sub Untermakro()
MsgBox "Makro in " & ActiveSheet.Name & " ausgeführt!"
End Sub
Verwende Option Explicit
am Anfang jedes Moduls, um sicherzustellen, dass alle Variablen deklariert werden. Dies hilft dir, Fehler zu vermeiden.
Kommentiere deinen Code gründlich, um die Nachvollziehbarkeit zu erhöhen, besonders wenn du komplexe Makros schreibst.
Teste deine Makros in einer sicheren Umgebung, bevor du sie auf kritische Daten anwendest.
1. Wie kann ich sicherstellen, dass mein Makro in allen Arbeitsblättern ausgeführt wird?
Um sicherzustellen, dass dein Makro in allen Arbeitsblättern ausgeführt wird, verwende eine Schleife, die durch alle Worksheets in ThisWorkbook
iteriert.
2. Was ist der Unterschied zwischen Call
und direktem Aufruf eines Makros?
Call
wird verwendet, wenn du das Makro in Klammern aufrufen möchtest, während ein direkter Aufruf ohne Call
erfolgt. Beide Methoden führen zum gleichen Ergebnis.
3. Wie kann ich ein Makro in Excel automatisch ausführen?
Du kannst ein Makro automatisch ausführen, indem du es im Code des Workbook_Open
-Ereignisses platzierst, sodass es beim Öffnen der Arbeitsmappe ausgeführt wird.
4. Kann ich mehrere Makros in einer Schleife aufrufen?
Ja, du kannst mehrere Makros in einer Schleife aufrufen, indem du die Call
-Anweisung für jedes Makro innerhalb der Schleife verwendest.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen