Makros ausblenden (Microsoft Excel)
Die meisten Leser wissen bereits, dass Sie mit VBA Funktionen und Unterprogramme erstellen können. Dies ist nicht anders als unter dem VBA-Namensvetter Visual Basic. Normalerweise wird ein Makro in der Makroliste angezeigt, wenn Sie das Dialogfeld Makros anzeigen (Alt + F8 drücken), es sei denn, eine der drei Bedingungen ist erfüllt:
-
Das Makro ist eine Funktion. Funktionen geben normalerweise Informationen zurück und erfordern, dass Informationen an sie übergeben werden. Da das Ausführen eines Makros aus der Makroliste keines dieser Ereignisse zulässt, muss es in Excel-Zahlen nicht aufgelistet werden. Benutzerdefinierte Funktionen, die in Excel sehr nützlich sind, werden im Dialogfeld Makros nicht angezeigt, da es sich schließlich um Funktionen handelt.
-
Das Makro ist eine Unterroutine mit Parametern. Excel geht davon aus, dass Parameter nicht erforderlich sind und Sie keine Parameter angeben können, indem Sie das Unterprogramm aus der Makroliste auswählen.
-
Das Unterprogramm wurde als privat deklariert. Dies bedeutet, dass das Unterprogramm nur zum Codieren innerhalb des Moduls nützlich ist, in dem es deklariert ist.
Der einzige Makrotyp, der im Dialogfeld Makros aufgeführt ist, ist eine nicht private Unterroutine ohne Parameter. In bestimmten Situationen möchten Sie jedoch möglicherweise auch nicht, dass diese aufgelistet werden. Beispielsweise haben Sie möglicherweise einige universelle Unterprogramme erstellt, die nichts Nützliches tun, wenn sie alleine aufgerufen werden. Sie können aus anderem Code aufgerufen werden. Betrachten Sie beispielsweise das folgende Makro:
Sub MySub() MsgBox "We are running the macro" End Sub
Dieses Makro wird im Dialogfeld Makros angezeigt. Wenn Sie nicht möchten, dass es angezeigt wird, können Sie verschiedene Lösungen verfolgen, die sich alle aus der Untersuchung der drei Möglichkeiten ergeben, mit denen Makros aus der Makroliste ausgeschlossen werden. Die erste mögliche Lösung besteht darin, Ihren Code zu untersuchen und herauszufinden, ob er wirklich „universell“ ist. Benötigen Sie den Code von mehr als einem Modul? Wenn Sie dies nicht tun, deklarieren Sie das Unterprogramm Private. Es wird nicht im Dialogfeld Makros angezeigt. Somit wird das vorherige Problemmakro wie folgt:
Private Sub MySub() MsgBox "We are running the macro" End Sub
Die zweite Möglichkeit, das Makro auszublenden, besteht darin, es einfach in eine Funktion zu konvertieren.
Dies mag seltsam klingen, insbesondere wenn Sie keine Werte zurückgeben möchten, dies ist jedoch durchaus zulässig. In VBA muss eine Funktion keinen Wert zurückgeben. Wenn kein Rückgabewert explizit deklariert wird, gibt die Funktion ein Standardergebnis zurück (z. B. Boolean gibt False zurück, String gibt „“ usw. zurück). Daher kann die Problemprozedur in eine Funktion geändert und wie hier gezeigt deklariert werden:
Function MySub() As Boolean MsgBox "We are running the macro" End Function
Diese Prozedur wird im Dialogfeld „Makros“ nicht angezeigt und erfordert keine Argumente. Standardmäßig wird False zurückgegeben, dieses Ergebnis kann jedoch ignoriert werden. Abhängig von der Art der Subroutine, die Sie ändern, kann es zu Ihrem Vorteil sein, dass die konvertierte Funktion je nach Erfolg der im Code ausgeführten Aktionen tatsächlich True oder False zurückgibt. In diesem Fall ist die konvertierte Funktion eine echte Funktion und nicht wirklich eine Dummy-Unterroutine, da sie etwas Wertvolles zurückgibt.
Die dritte mögliche Lösung besteht darin, einige Dummy-Parameter mit dem Unterprogramm zu verwenden. Sie müssen innerhalb des Unterprogramms selbst nichts mit ihnen tun, aber wenn Sie sie einschließen, wird die Prozedur nicht in der Makroliste aufgeführt. In diesem Szenario wird die Problemunterroutine wie folgt geändert:
Sub MySub(Void As Integer) MsgBox "We are running the macro" End Sub
Jetzt ist die Prozedur nicht in der Makroliste aufgeführt, aber Sie müssen die Art und Weise ändern, in der die Unterroutine aufgerufen wird. Sie müssen jede Instanz so ändern, dass ein Parameter übergeben wird, obwohl er nie verwendet wird.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (3291) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: