Makro starten, wenn eine Bedingung in einer Excel-Tabelle erfüllt ist
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:
- Starten Sie zuerst den VBA-Editor. Das erledigen Sie in allen Excel-Versionen über die Tastenkombination ALT F11.
- 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:
Anschließend steht der Text "Gestartet." In der Zelle. Dieses Ergebnis hat die benutzerdefinierte Tabellenfunktion an Excel zurückgegeben.
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
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.