Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro durch anders Makro nicht ausführen lassen!

Makro durch anders Makro nicht ausführen lassen!
Gabriella
Hallo,
ich habe ein Problem mit meinem Programm. Undzwar habe ich ein Programm geschrieben, das mir automatisch diverse Werte berechnet und sie in neuen erstellten Tabellen zeigen. Das Programm wird von diversen Makros unterstützt. Das Problem ,ich möchte genau ein Makro(2) in dem ganzen Prozedurenaufruf nicht ausführen,damit auch diesbzgl keine Rechnungen gemacht werden und Tabellen entsprechend diesem Makro nicht entstehen.
Gibt es da nicht einen einfachen Befehl dafür?Den man quasi in einem Makro einbaut um ein anderes Makro nicht ausführen zu lassen?
LG,Gabbi
Anzeige
AW: Makro durch anders Makro nicht ausführen lassen!
24.08.2011 10:44:06
Tino
Hallo,
kenne Dein Programm nicht.
Wenn Du Deine Makros mit
Call Makro1
Call Makro2
Call Makro3
uws...

aufrufst, mach um das besagte Makro eine If abfrage.
Call Makro1
if Meine_Bedingung = True then
Call Makro2
end if
Call Makro3
usw...

Gruß Tino
Anzeige
AW: Makro durch anders Makro nicht ausführen lassen!
24.08.2011 10:52:21
Gabriella
Das habe ich mir auch schon überlegt. Ich wüsste leider nicht, wie die If-Bedingung dann auszusehen hat. Ich rufe ja in einer Methode(1) alle anderen Methoden bzw. Makros auf. Jetzt habe ich ja eine zusätzliche Methode(2) eingebaut, die zwar das gleiche wie (1) macht, aber genau eine Methode(Makro) nicht ausführt.
Kann das denn überhaupt klappen?
Anzeige
Da gibt's verschiedene Möglichkeiten, ...
24.08.2011 10:53:41
Luc:-?
…Gabbi,
das hängt ganz von der Gesamt-Operationsstruktur ab, die wir ja nicht kennen. Normalerweise reicht ja schon, ein Makro nicht aufzurufen, damit es nicht ausgeführt wird… ;-)
Falls es sich bei dem ggf zu sperrenden Makro um eine Ereignisprozedur handeln sollte, ist es etwas komplizierter. Wenn die Ausführung des Makros von Bedingungen abhängen soll, müssten die (unabhängig vom Makrotyp) halt abgefragt wdn. Ansonsten gibt's noch die bedingte Kompilierung
Gruß Luc :-?
Anzeige
AW: Da gibt's verschiedene Möglichkeiten, ...
24.08.2011 10:58:49
Gabriella
uii also erstere is es nicht. Mein Programm hat 2 Buttons um es zu starten. Button 1 führt alle Prozesse durch. Button 2 macht das gleiche wie 1, bis auf einem Makro bzw Methode. Das ist das Problem, dass ich leider nicht gebacken bekomme :/
Dann rufe mit den Buttons doch 1 Vorschalt...
24.08.2011 11:15:25
Luc:-?
…pgm auf, Gabi,
das deine HptProz parametriert aufruft (1 Boolean-Param sollte reichen). Von dem machst du dann abhängig, ob dieses 1 Makro ausgeführt wird oder nicht …
Button1: Call hptproz
Button2: Call hptproz(True)
Sub hptproz(Optional ByVal butParm As Boolean)
If butParm Then Call dasbewusstemakro
Gruß Luc :-?
Anzeige
Genauer 2 solche Pgmm ...
24.08.2011 11:27:49
Luc:-?

Sub RufButton1: Call hptproz: End Sub
Sub RufButton2: Call hptproz(True): End Sub
Luc :-?
I got it!
24.08.2011 14:00:41
Gabriella
JUhuuu ich habs geschafft!!!
..and how? ;-) owT
24.08.2011 14:04:11
robert
Anzeige
AW: ..and how? ;-) owT
24.08.2011 16:38:37
Gabriella
Da meine 3 Varianten quasi ähnlich sind(bis auf paar Kleinigkeiten),habe ich den Code des Quellcodes auf die anderen beiden Varianten übertragen,bisschen geändert wo es nötig war und schwups es funzt!!! =D

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Makro durch ein anderes Makro nicht ausführen lassen


Schritt-für-Schritt-Anleitung

Um ein spezifisches Makro nicht auszuführen, kannst Du eine einfache If-Abfrage in Deinem VBA-Code implementieren. Hier ist eine grundlegende Anleitung:

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel (Drücke ALT + F11).

  2. Füge ein neues Modul hinzu, falls Du noch keines hast.

  3. Schreibe die Hauptprozedur, die die anderen Makros aufruft:

    Sub HauptProzedur()
       Call Makro1
       If Meine_Bedingung = True Then
           Call Makro2
       End If
       Call Makro3
    End Sub
  4. Definiere die Bedingung, die bestimmen soll, ob das Makro 2 ausgeführt wird oder nicht. Du kannst diese Bedingung je nach Bedarf anpassen.

  5. Teste das Makro durch Ausführen der HauptProzedur. Stelle sicher, dass Makro2 nur dann aufgerufen wird, wenn die Bedingung erfüllt ist.


Häufige Fehler und Lösungen

  • Fehler: Makro wird trotzdem ausgeführt.

    • Lösung: Überprüfe, ob die If-Bedingung korrekt gesetzt ist. Achte darauf, dass die Variable Meine_Bedingung den erwarteten Wert hat.
  • Fehler: Fehlermeldung bei der Ausführung.

    • Lösung: Stelle sicher, dass alle aufgerufenen Makros existieren und korrekt benannt sind. Ein Tippfehler kann zu einem Laufzeitfehler führen.

Alternative Methoden

Es gibt verschiedene Ansätze, um ein Makro nicht auszuführen:

  1. Parameterübergabe: Du kannst Deine Hauptprozedur so anpassen, dass sie einen Boolean-Parameter akzeptiert, um zu steuern, ob das bestimmte Makro ausgeführt wird. Beispiel:

    Sub HauptProzedur(Optional ByVal skipMakro2 As Boolean = False)
       Call Makro1
       If Not skipMakro2 Then
           Call Makro2
       End If
       Call Makro3
    End Sub
  2. Ereignisprozeduren: In manchen Fällen kann es sinnvoll sein, eine Ereignisprozedur zu verwenden, um die Ausführung basierend auf Benutzeraktionen zu steuern.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das die beschriebenen Konzepte veranschaulicht:

Sub RufButton1()
    Call HauptProzedur
End Sub

Sub RufButton2()
    Call HauptProzedur(True) ' Makro 2 wird übersprungen
End Sub

In diesem Beispiel führt RufButton1 alle Makros aus, während RufButton2 das Makro 2 nicht ausführt, indem es den Parameter True übergibt.


Tipps für Profis

  • Debugging nutzen: Verwende die Debugging-Tools im VBA-Editor, um Deinen Code schrittweise auszuführen und Variablenwerte zu überprüfen.
  • Modularität: Halte Deine Makros so modular wie möglich. Dies erleichtert das Testen und Ändern, ohne dass Du den gesamten Code durchsehen musst.
  • Dokumentation: Kommentiere Deinen Code ausführlich, damit Du und andere Entwickler später nachvollziehen können, was jede Prozedur macht.

FAQ: Häufige Fragen

1. Kann ich mehrere Makros gleichzeitig überspringen?
Ja, Du kannst mehrere Bedingungen in einer If-Anweisung kombinieren oder mehrere Parameter in Deiner Hauptprozedur verwenden.

2. Was ist, wenn ich eine komplexe Bedingung brauche?
Du kannst komplexe Bedingungen mit logischen Operatoren wie And und Or erstellen, um die Ausführung Deiner Makros weiter zu steuern.

3. Welche Excel-Version benötige ich für diese Methoden?
Die beschriebenen Methoden sind in den meisten modernen Excel-Versionen (Excel 2010 und später) anwendbar.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige