Ein Hinweisfenster reagiert auf einen WENN-Funktion
Ein Hinweisfenster reagiert auf einen WENN-Funktion

Makro starten, wenn eine Bedingung in einer Excel-Tabelle erfüllt ist

Über einen Trick können Sie ein Makro starten, sobald eine WENN-Funktion in Ihrer Excel-Tabelle ein bestimmtes Ergebnis liefert

In einer Excel-Tabelle soll ein Makro ausgeführt werden, sobald eine WENN-Tabellenfunktion einen Wahrheitswert liefert. Ansonsten soll einfach ein Text angezeigt werden.

Diese Aufgabenstellung lösen Sie mit einer benutzerdefinierten VBA-Funktion. Dabei arbeiten Sie mit einer Function-Prozedur statt mit einer Sub-Prozedur.

Wenn bereits ein Makro vorliegt, das Sie mit einer WENN-Funktion starten möchten, können Sie den Code in die Function-Prozedur hineinkopieren oder die Sub-Prozedur daraus aufrufen.

Als Beispiel dient ein Makro mit dem Namen „Startmakro“, das lediglich eine einfache Dialogbox aufruft. Gehen Sie folgendermaßen vor:

 

  1. Starten Sie zuerst den VBA-Editor. Das erledigen Sie in allen Excel-Versionen über die Tastenkombination ALT F11.
  2. Wählen Sie den Befehl EINFÜGEN - MODUL, um ein neues Modulblatt einzufügen.

Geben Sie die folgenden VBA-Befehle ein:

Public Function Startmakro() As String
 
Call Anzeige
 Startmakro = "Gestartet."
End Function
Sub Anzeige()
 MsgBox "Makro wurde gestartet"
End Sub

Der Programmcode besteht aus zwei einzelnen Teilen. Das erste Fragment bildet die neue Tabellenfunktion STARTMAKRO ab. Das zweite Fragment sorgt für die Anzeige des Textes "Makro wurde gestartet."

Nach der Eingabe der Befehle rufen Sie im VBA-Editor im Menü DATEI den Befehl SCHLIEßEN UND ZURÜCK ZU MICROSOFT EXCEL auf. Damit kehren Sie zu Ihrer Tabelle zurück.

So binden Sie das Makro in eine WENN-Funktion ein

Um festzustellen, ob das Makro richtig arbeitet, geben Sie in Zelle A2 einer Tabelle die folgende Funktion ein:

=WENN(A1=1;startmakro();"Nicht gestartet.")

Wenn Sie in Zelle A1 die Zahl 1 eintragen, wird das Makro von Ihrer benutzerdefinierten Funktion aufgerufen. Das Hinweisfenster erscheint, wie es in der folgenden Abbildung dargestellt ist:

Ein Hinweisfenster reagiert auf einen WENN-Funktion

Anschließend steht der Text "Gestartet." In der Zelle. Dieses Ergebnis hat die benutzerdefinierte Tabellenfunktion an Excel zurückgegeben.

Das Funktionsergebnis nach dem Start des Makros

Falls in Zelle A1 ein Inhalte ungleich 1 steht, wird das Makro nicht gestartet. In diesem Fall legt die WENN-Funktion den Text "Nicht gestartet." als Ergebnis fest

So sieht der Zellinhalten nach dem Makrostart aus

Der vorgestellte Weg ist ein Verfahren, das von Microsoft nicht empfohlen wird. Innerhalb von benutzerdefinierten Funktionen sollen keine Mitteilungsfenster dargestellt werden.

Es ist nicht notwendig, die beiden Makros STARTMAKRO und ANZEIGE zu trennen. Sie können auch auf den Befehle CALL im VBA-Makro verzichten und die Kommandos für das Unterprogramm direkt in das Unterprogramm FUNCTION einbinden.