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

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 6/2003.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Benutzerabhängige Befehlsleisten

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.

Angepasste Menü- und
Symbolleisten in Access

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.

Abb. 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 (s. Abb. 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. (

    Abb. 2: Das Dialogfenster Verweise in Access 97

    Abb. 3: Das Formular frmToolBarDemo_1

    Abb. 4: Befehlsleiste mit drei verschiedenen Elementen

    Befehlsleistenelemente per VBA erstellen

    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 (s. Abb. 3).

    Ein Klick auf die Schaltfläche btnCreateToolBar erstellt eine Befehlsleiste mit drei verschiedenen Elementen (s. Abb. 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).

    Die eigentlichen Menüpunkte sind wieder vom Objekttyp msoControlButton, aufgerufen werden wieder entsprechende Funktionen.

    Notwendige
    Fehlerbehandlung

    Wenn Sie versuchen, eine bereits existierende Befehlsleiste noch einmal zu erstellen, löst Access den Laufzeitfehler 5 aus. Da Access bei dieser Gelegenheit dazu neigt, heftig abzustürzen, muss dieser unbedingt aufgefangen werden (s. Quellcode 5).

    Befehlsleiste löschen

    Damit sind wir beim Löschen von Befehlsleisten angekommen. Dies erledigt folgender Ausdruck:

    CommandBars("Test Toolbar").Delete

    Benutzerabhängige Befehlsleisten

    Das zweite Anwendungsbeispiel erzeugt dynamisch eine Menüleiste in Abhängigkeit vom angemeldeten Benutzer.

            Set cmdBtn2 = _
                .Controls.Add(Type:=msoControlButton)

            With cmdBtn2

                .Caption = "&Morgen"

                .OnAction = "FestlegenMorgen"

                .Style = msoButtonCaption

            End With

    Quellcode 4 (Fortsetzung)

    btnCreateToolbar_Err:

        If Err.Number = 5 Then

            MsgBox "Menüleiste bereits vorhanden - muss " _
               & "vor Neuerstellung gelöscht werden!"

            ElseIf Err.Number <> 0 Then

                 MsgBox "btnCreateToolbar_Error " & _
                     Err.Number & " " & Err.Description

        End If

    Quellcode 5

    Abb. 5: Die benutzerdefinierte Menüleiste

    Abb. 6: Das Formular frmAnmeldung

    Eine solche Auslegung ist beispielsweise dann sinnvoll, wenn bestimmte Benutzergruppen von bestimmten Funktionen ferngehalten werden sollen. Typisches Beispiel:

    Das Übersichtsformular einer Datenbankanwendung: Die Menüpunkte zum Aufruf der Datenbankwartung und Benutzerverwaltung sind nur für den Administrator relevant. Allen anderen Benutzern brauchen sie nicht zur Verfügung zu stehen.

    Admin-Version der Menüleiste

    Das Merkmal dieser Menüleiste ist die Kombination von eingebauten und selbst erstellten Menüpunkten (s. Abb. 5).

  • Das Menü Datei enthält den eingebauten Menübefehl Schließen.
  • Das selbst definierte Menü Formular dient mit den entsprechenden Unterpunkten zum Öffnen von Formularen.
  • Das Menü Extras enthält einen Ausschnitt aus dem gleichnamigen Standardmenü von Access.
  • Bei der Benutzer-Version des Menüs fehlt der letzte Menüpunkt Extras, womit die eingangs gestellte Anforderung erfüllt ist.

    Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

    Sind Sie Abonnent?Jetzt einloggen ...
     

    Kompletten Artikel lesen?

    Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

    E-Mail:

    Verwandte Beiträge:

    Vertikale Menüleisten

    Dynamische Ribbons

    Auswahlfelder im Ribbon

    Benutzerverwaltung

    © 2003-2015 André Minhorst Alle Rechte vorbehalten.