Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Kontextmenü im Datenbankfenster II

Im ersten Teil dieser Beitragsreihe haben Sie erfahren, wie Sie dem Kontextmenü der Einträge des Datenbankfensters manuell neue Einträge hinzufügen. In diesem Teil erledigen Sie das mit einer kleinen VBA-Prozedur.

Teil I: Kontextmenü erweitern - manuell

Teil II: Kontextmenü erweitern - per VBA

Teil III: Datenbankfenstereinträge manipulieren

Kontextmenü erweitern - per VBA

Um auf eine Symbolleiste zuzugreifen - und dazu gehört auch das Erweitern - ist es hilfreich, den englischen Namen der Symbolleiste zu kennen. Dummerweise lässt sich nicht immer der englische Name aus der deutschen Bezeichnung ableiten. Hilfe bietet in dem Fall eine kleine Funktion, mit der Sie einfach alle vorhandenen Einträge auflisten und sich den passenden aussuchen. Diese Funktion sieht folgendermaßen aus:

Public Function MenuesAuflisten()

    Dim cbr As Object

    For Each cbr In Application.CommandBars

        Debug.Print cbr.Name, cbr.NameLocal, cbr.Type, _

            cbr.Position, cbr.BuiltIn

    Next cbr

End Function

Haben Sie einmal herausgefunden, wie die Ziel-Menüleiste heißt, können Sie diese leicht bearbeiten. Die folgende Prozedur verwendet Late Binding und deklariert zunächst zwei Variablen vom Typ Object. Die erste füllt sie in der nächsten Anweisung mit der Menüleiste Database Form, der zweiten weist sie den neu hinzugefügten Eintrag zu. Das Hinzufügen erfolgt über die Add-Methode der Controls-Auflistung der Symbolleiste.

Nun fehlen noch die Eigenschaften, die das Aussehen und das Verhalten des neuen Eintrags charakterisieren.

Zu beachten ist hier, dass durch die Verwendung von Late Binding die den Konstanten entsprechenden Zahlenwerte zum Zuge kommen - wie beispielsweise 1 für msoControlButton.

Public Sub NeuerMenueeintrag()

    Dim cbr As Object

    Dim cbc as Object

    Set cbr = CommandBars("Database Form")

    Set cbc = cbr.Controls.Add(Type:=1) '1=msoControlButton

    cbc.Caption = "Neuer Eintrag"

    cbc.OnAction = "=Beispielfunktion()"

    cbc.Tag = "Neuer Eintrag"

    cbc.BeginGroup = True

    cbc.FaceId = 2189

    cbc.Style = 3 'msoButtonIconAndCaption

End Sub

Wenn Sie die Prozedur nun aufrufen, finden Sie anschließend den neuen Eintrag im Kontextmenü der Formular-Einträge im Datenbankfenster vor.

Hinweis: Man könnte auch Early Binding verwenden; dazu müsste man zunächst einen Verweis auf die Office-Bibliothek anlegen. Anschließend stehen aber auch alle Konstanten und Objekttypen zur Verfügung.

© 2003-2015 André Minhorst Alle Rechte vorbehalten.