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 (Alt + F8) anzeigen, 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 Word-Zahlen nicht aufgelistet werden.

  • Das Makro ist eine Unterroutine mit Parametern. Word 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.

Das Ergebnis dieser drei Bedingungen ist, dass der einzige im Dialogfeld Makros aufgeführte Makrotyp eine nicht private Unterroutine ohne Parameter ist. 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 WordTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

WordTips ist Ihre Quelle für kostengünstige Microsoft Word-Schulungen.

(Microsoft Word ist die weltweit beliebteste Textverarbeitungssoftware.) Dieser Tipp (13253) gilt für Microsoft Word 2007, 2010, 2013, 2016, 2019 und Word in Office 365. Eine Version dieses Tipps finden Sie für ältere Menüoberfläche von Word hier: