Benutzerabhängige Befehlsleisten

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Klaus Giesen, Wuppertal

Access verfügt wie allen anderen Office-Anwendungen auch über eine Reihe Standardmenü- und Symbolleisten. Bei individuellen Datenbankanwendungen ist es jedoch für den Anwender angenehmer und auch sicherer, wenn er für eine solche Anwendung auch über benutzerdefinierte Menü- und Symbolleisten verfügt. So können beispielsweise leicht individuelle Menü- und Symbolleisten in Abhängigkeit vom angemeldeten Benutzer erstellt werden.

Zur Erstellungen eigener Menü- und Symbolleisten gibt es zwei Möglichkeiten.

Die erste Möglichkeit erfolgt über das Dialogfenster Anpassen, das Sie mit dem Menübefehl Extras/Anpassen oder durch Anklicken einer Leiste mit der rechten Maustaste und Auswahl des Eintrags Anpassen aufrufen können.

Bild 1: Das Dialogfenster Anpassen

Auf diese Art der Erstellung beziehungsweise Bearbeitung wird in diesem Beitrag jedoch nicht näher eingegangen. Wir beschäftigen uns hier ausschließlich mit der zweiten Möglichkeit, Menü- und Symbolleisten per VBA zu erstellen. Diese Methode hat einige Vorzüge, wie beispielsweise:

  • Programmgesteuerter Aufruf
  • Situationsbedingte Steuerung
  • Bevor es losgeht, müssen Sie je nach verwendeter Access-Version die passenden Verweise erstellen.

    Verweise

    Aufgrund des gemeinsamen Objektmodells müssen Sie vor der Programmierung von Befehlsleisten in Access abhängig von der benutzten Version entsprechende Verweise in Ihrer Datenbank einstellen.

    Hinweis

    Sie können theoretisch auch komplett ohne Verweise auskommen. Wie das funktioniert und welche Vor- und Nachteile das hat, erfahren Sie im Beitrag Verwendung von Objektvariablen in der vorliegenden Ausgabe von Access im Unternehmen.

    Access 97

    In Access 97 stellen Sie einen Verweis auf die dieser Version entsprechenden Bibliothek Microsoft Office 8.0 Object Library ein. Wählen Sie dazu in der Entwurfsansicht eines Moduls aus dem Menü Extras den Befehl Verweise aus und aktivieren Sie das Kontrollkästchen vor dem entsprechenden Eintrag (siehe Bild 2).

    Access 2000

    Access 2000 erfordert einen Verweis auf die Microsoft Office 9.0 Object Library. Die Einstellung erfolgt genauso, wie eben beschrieben.

    Hinweis

    Die beiden Beispieldatenbanken zu diesem Beitrag enthalten jeweils den entsprechenden Verweis. Sie finden diese Beispieldatenbanken in den Versionen für Access 97 (Menus97.mdb) und Access 2000 (Menus00.mdb) auf der beiliegenden CD-ROM im Ordner mdb.

    Bild 2: Das Dialogfenster Verweise in Access 97

    Bild 3: Das Formular frmToolBarDemo_1

    Bild 4: Befehlsleiste mit drei verschiedenen Elementen

    Dieses erste Anwendungsbeispiel erstellt eine Befehlsleiste mit verschiedenen Elementen. Einige dieser Elemente führen dann Aktionen aus, so wie Sie es von Ihrer täglichen Arbeit mit Befehlsleisten her gewohnt sind. Ausgangspunkt ist das Formular frmToolBarDemo_1 der Beispieldatenbank (siehe Bild 3).

    Ein Klick auf die Schaltfläche btnCreateToolBar erstellt eine Befehlsleiste mit drei verschiedenen Elementen (siehe Bild 4):

  • Schaltfläche
  • Kombinationsfeld
  • Menü
  • Die dabei ausgeführte Ereignisprozedur kann hier nur auszugsweise besprochen werden. Sie finden den vollständigen Code im Klassenmodul des Formulars in der Beispieldatenbank.

    Befehlsleiste erstellen

    Der in Quellcode 1 abgedruckte Code legt die neue Befehlsleiste Test Toolbar an und verankert diese links oben.

    Schaltfläche erstellen

    In der Befehlsleiste wird eine Schaltfläche (msoControlButton) erstellt (s. Quellcode 2).

    Die Zuweisung des angezeigten Schaltflächensymbols erfolgt über die Eigenschaft FaceID.

    Der Klick auf eine Schaltfläche sollte natürlich irgendeine Aktion hervorrufen. Dies erfolgt mit der Eigenschaft OnAction, die bei diesem Beispiel das Makro macAttention ausführt.

    Kombinationsfeld erstellen

    Das nächste Objekt in der Befehlsleiste ist ein Kombinationsfeld (s. Quellcode 3).

    Set CmdBar = Application.CommandBars.Add(Name:= _  "Test Toolbar", Position:=msoBarTop, temporary:=False)
    CmdBar.Enabled = True
    CmdBar.Visible = True

    Quellcode 1

    Set cmdBtn = CmdBar.Controls.Add(Type:=msoControlButton)
    With cmdBtn
        .Style = msoButtonIcon
        .FaceId = 352
        .Caption = "Achtung"
        .Style = msoButtonIconAndCaption
        .Tag = "Test Button"
        .OnAction = "macAttention"
    End With

    Quellcode 2

    Set cmdComboBox = _    CmdBar.Controls.Add(msoControlComboBox)
    With cmdComboBox
        .AddItem "Torwart", 1
        .AddItem "Libero", 2
        .AddItem "Abwehr", 3
        .AddItem "Mittelfeld", 4
        .AddItem "Angriff", 5
        .Caption = "Auswahl Position"
        .Tag = "Test Combo Box"
        .OnAction = "SavePosition"
        .Style = msoComboLabel
        .DropDownLines = 8
        .DropDownWidth = 75
    End With

    Quellcode 3

    Set cmdPopUp = mdBar.Controls.Add(Type:=msoControlPopup)
        With cmdPopUp
            .Caption = "&Besprechung festlegen"
            .Tag = "Test PopUp"
            Set cmdBtn1 = _            Controls.Add(Type:=msoControlButton)
            With cmdBtn1
                .Caption = "&Heute"
                .OnAction = "FestlegenHeute"
                .Style = msoButtonCaption
            End With

    Quellcode 4 (Teil 1)

    Die Listeneinträge werden bei diesem Beispiel dynamisch erzeugt und die Eigenschaft OnAction ruft eine Funktion auf.

    Menü erstellen

    Zum Abschluss kommen wir doch noch zu einem richtigen Menü in unserer Befehlsleiste (s. Quellcode 4).

    Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

    Testzugang

    eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

    diesen und alle anderen Artikel mit dem Jahresabo

    Schreibe einen Kommentar