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

Forumthread: mit einem Makro ein anderes Makro ausführen

mit einem Makro ein anderes Makro ausführen
30.08.2013 09:56:32
Herbert
Guten Morgen,
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.

Anzeige

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

Betreff
Datum
Anwender
Anzeige
Call makro2 owT
30.08.2013 10:01:46
JACKD
owt = ohne weiteren Text

AW: mit einem Makro ein anderes Makro ausführen
30.08.2013 10:09:33
Doris
Hallo,
hier ein kurzes Bsp. zum Aufruf von Makros test1 und test2.
sub test0()
call test1
call test2
end sub
Sub Test1()
end sub
Sub Test1()
end sub
Hoff das hilft weiter.
Gruß Doris

AW: mit einem Makro ein anderes Makro ausführen
30.08.2013 10:36:11
Herbert
hallo Doris,
vielen Dank für die schnelle Antwort. Beim aktuellen Tabellenblatt klappt das.
Ich will aber dass das Makro in allen Tabellenblättern ausgeführt wird.
Beispiel: Makro1 blendet im aktuellen Blatt verschieden Spalten aus. Mit Makro 2 soll das Makro 1 in allen Tabellenblättern ausgeführt werden.

Anzeige
... in allen Blättern ...
30.08.2013 10:34:33
Erich
Hi Herbert,
ein Makro wird nicht "in einem Tabellenblatt" ausgeführt. (Kann ja sein, dass es gar nichts zu tun hat mit Blättern,
sondern nur eine MsgBox ausgibt oder Eigenschaften der Arbeitsmappe ändert oder ...)
Hier mal ein Beispiel, wie man ein Makro in einer Schleife so aufrufen kann,
dass alle Blätter einer Mappe bearbeitet werden:

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.
Wenn man "Call" schreibt, muss man den/die Paramneter in Klammern setzen.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
oder innerhalb eines Makros
30.08.2013 10:43:17
Erich
Hi Herbert,
manchmal lohnt es sich nicht, die Berarbeitung in ein Untermakro auszulagern.
Dann geht es einfacher so:

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

Anzeige
AW: oder innerhalb eines Makros
01.09.2013 09:05:25
Erich.G
hallo Erich,
genauso sollte es sein. Setzt ich allerdings meine Daten ein, dann funktioniert es nicht mehr.
Hab mal die Beispieldatei hochgeladen.
https://www.herber.de/bbs/user/87109.xlsm
Kannst du mir helfen?
vielen Dank im voraus.

Anzeige
AW: oder innerhalb eines Makros
01.09.2013 13:37:16
Erich
Hi Herbert,
warum postest du deine Frage jetzt als "Erich.G"? Das ist meinem Usernamen "Erich G." sehr ähnlich...
Hier habe ich etwas Ähnliches gesehen:
https://www.herber.de/forum/archiv/1216to1220/1217832_Alle_Blaetter_eines_Workbook_zoomen.html#1217837
So könnte das bei dir funzen:

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...
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: oder innerhalb eines Makros
04.09.2013 22:09:14
herbert
hallo Erich,
das mit dem Namen war ein Fehler von mir. Bin noch ziemlich neu hier und dachte, da gehört der Name des letzten Absenders rein. Aber jetzt weiß ich es.
Vielen Dank für dein Makro. Genauso sollte es sein und es klappt einwandfrei.
Nochmal vielen Dank
viele Grüße
Herbert

Anzeige
AW: ... in allen Blättern ...
30.08.2013 10:44:48
Herbert
hallo Erich,
vielen Dank. Ich werde es am Wochenende ausprobieren und dir sagen ob´s klappt.
Ich hoffe ich bekomm´s hin, da meine VBA-Kenntnisse relativ bescheiden sind.
viele Grüße
;

Forumthreads zu verwandten Themen

Anzeige
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

Mit einem Makro ein anderes Makro ausführen


Schritt-für-Schritt-Anleitung

Um ein Excel VBA Makro auszuführen, das ein anderes Makro aufruft, folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul, indem du mit der rechten Maustaste auf VBAProject (DeineDatei.xlsm) klickst und Einfügen > Modul wählst.
  3. Schreibe das Hauptmakro, das ein anderes Makro aufruft. Hier ist ein einfaches Beispiel:
Sub Hauptmakro()
    Call Untermakro
End Sub

Sub Untermakro()
    MsgBox "Das Untermakro wurde erfolgreich aufgerufen!"
End Sub
  1. Um das Makro in allen Arbeitsblättern auszuführen, kannst du eine Schleife verwenden:
Sub HauptmakroAlleBlätter()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        ws.Activate
        Call Untermakro
    Next ws
End Sub
  1. Führe das Hauptmakro aus, um zu testen, ob es das Untermakro erfolgreich aufruft.

Häufige Fehler und Lösungen

  • Fehler: "Sub oder Function nicht definiert"

    • Lösung: Stelle sicher, dass der Name des Makros korrekt geschrieben ist und dass es sich im gleichen Modul oder in einem zugänglichen Modul befindet.
  • Fehler: "Das Makro kann nicht ausgeführt werden"

    • Lösung: Überprüfe, ob die Makros in den Excel-Optionen aktiviert sind. Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center und aktiviere die Makros.

Alternative Methoden

Es gibt verschiedene Möglichkeiten, ein Makro aus einem anderen Makro auszuführen:

  1. Direktes Aufrufen: Du kannst ein Makro direkt durch seinen Namen aufrufen, ohne Call zu verwenden.

    Sub Hauptmakro()
       Untermakro
    End Sub
  2. Verwendung von Application.Run: Dies ermöglicht das Aufrufen von Makros, die sich in anderen Arbeitsmappen befinden.

    Application.Run "AndereMappe.xlsm!Untermakro"

Praktische Beispiele

Hier sind einige praktische Beispiele, die dir zeigen, wie du Makros in verschiedenen Szenarien ausführen kannst:

  • Beispiel 1: Ein Makro, das Daten in mehreren Blättern bearbeitet.
Sub DatenBearbeiten()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        ws.Cells(1, 1).Value = "Daten bearbeitet"
    Next ws
End Sub
  • Beispiel 2: Ein Makro, das ein anderes Makro in jedem Blatt aufruft.
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

Tipps für Profis

  • 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.


FAQ: Häufige Fragen

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.

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