Zusammenfassung
Erstellen Sie Symbolleisten mit Text- und Kombinationsfeldern, um beispielsweise eine Suchfunktion für Formulare zu realisieren.
Techniken
Symbolleisten, VBA
Voraussetzungen
Access 97 oder höher
Beispieldateien
Suchleiste97.mdb, Suchleiste00.mdb
Martin Hoffmann, Düsseldorf; André Minhorst, Duisburg
Mit den im Beitrag „Menüs für die Anwendung“ (Shortlink 300) beschriebenen Techniken lassen sich lediglich Symbolleisten mit Schaltflächen gestalten, die Text, ein Symbol oder beides enthalten. In vielen Anwendungen gibt es aber noch andere Elemente in Symbolleisten wie zum Beispiel Text- oder Kombinationsfelder. Diese Steuerelemente können Sie auch in Ihrer Datenbank nutzen, um den Komfort der Oberfläche zu erhöhen. Das folgende Beispiel zeigt, wie Sie eine Suchen-Symbolleiste erzeugen, die eine ähnliche Funktionalität wie der Suchen-Dialog hat. Im Gegensatz zum Dialog ist die Symbolleiste aber jederzeit präsent und nimmt wesentlich weniger Platz weg.
Für die Realisierung einer Symbolleiste mit Text- und Kombinationsfeldern ist nur geringer Programmieraufwand nötig, um dieses Steuerelement anzulegen.
Access verwaltet alle Menü- und Symbolleisten der aktuellen Datenbank über die Commandbars-Auflistung. Damit Sie die Commandbars-Auflistung in VBA verwenden können, aktivieren Sie im Verweis-Dialog die Referenz auf die Microsoft Office x.0 Object Library, wobei x für die verwendete Office-Version steht. Den Dialog Verweise rufen Sie über den gleichnamigen Befehl des Menüs Extras auf, wenn ein beliebiges Modulfenster geöffnet ist.
Eine bestimmte Symbolleiste sprechen Sie über ihren Namen an, Eigenschaften trennen Sie durch einen Punkt vom Objekt:
Commandbars(<Symbolleistenname>).<Eigenschaft>
Um beispielsweise eine Symbolleiste einzublenden, verwenden Sie die Visible-Eigenschaft des entsprechenden Commandbar-Objekts. Die folgende Programmzeile blendet die benutzerdefinierte Symbolleiste mit dem Namen Suchen-Symbolleiste ein:
CommandBars("Suchen-Symbolleiste").Visible = True
Wenn Sie auf die Access-internen Symbolleisten zugreifen wollen, müssen Sie die englischen Namen verwenden. Für die Symbolleiste Datenbank ist das beispielsweise der Name Database. Mit der folgenden Programmschleife geben Sie alle englischen Symbolleistennamen im Testfenster aus:
Dim cmb As CommandBar For Each cmb In CommandBars Debug.Print cmb.Name Next cmb
Auf ein bestimmtes Steuerelement in einer Symbolleiste greifen Sie mittels der Controls-Auflistung zu. Zur Identifikation können Sie entweder den Index oder den Namen des Steuerelements angeben. Der Index innerhalb einer Symbolleiste startet mit 1 beim ersten Steuerelement. Der Zugriff über den Namen ist jedoch vorzuziehen, da sich dieser nicht ändert, wenn Sie die Steuerelemente der Symbolleiste neu anordnen, der Index hingegen schon.
Den Namen eines Symbolleisten-Steuerelements legen Sie über die Eigenschaft Caption fest. Achten Sie darauf, dass alle Steuerelemente einer Befehlsleiste unterschiedliche Beschriftungstexte haben, da ein Befehl sonst nicht mehr eindeutig identifiziert werden kann.
Für den Zugriff auf eine Steuerelement-Eigenschaft verwenden Sie die folgende Syntax:
Commandbars(<Symbolleistenname>).Controls(<Steuerelementname>).<Eigenschaft>
oder
Commandbars(<Symbolleistenname>).Controls(<Index>).<Eigenschaft>
Um beispielsweise die Schaltfläche Weitersuchen der Symbolleiste Suchen-Symbolleiste zu deaktivieren, verwenden Sie die folgende Zeile:
CommandBars("Suchen-Symbolleiste").Controls("Weitersuchen").Enabled = False
äquivalent dazu können Sie auch den Index des Steuerelements angeben. Wenn das Weitersuchen-Symbol der zweite Befehl in der Symbolleiste ist, dann lautet der Aufruf wie folgt:
CommandBars("Suchen-Symbolleiste").Controls(2).Enabled = False
Im Folgenden erzeugen Sie Schritt für Schritt die Suchen-Symbolleiste mit allen nötigen Steuerelementen und dem zugehörigen Programmcode. Legen Sie zunächst über den Dialog Anpassen eine neue Symbolleiste mit dem Namen Suchen-Symbolleiste an und beenden Sie anschließend den Dialog (siehe Bild 1).
Bild 1: Erzeugen einer neuen Symbolleiste
Steuerelemente erzeugen
Für die Symbolleiste benötigen Sie zwei Schaltflächen für das Suchen und Weitersuchen, ein Kombinationsfeld zur Auswahl des Suchfeldes und ein Textfeld für die Eingabe des Suchtextes. Außerdem soll über ein Kombinationsfeld die Art des Suchtextvergleichs vorgegeben werden.
Quellcode 1: Anlegen eines Steuerelements in einer Symbolleiste
Public Sub SteuerelementAnlegen(Symbolleiste As String, Typ As Office.MsoControlType, _ Beschriftung As String) Dim c As CommandBarControl Set c = CommandBars(Symbolleiste).Controls.Add(Type:=Typ) c.Caption = Beschriftung End Sub
Quellcode 2: Steuerelemente der Suchen-Symbolleiste anlegen
Public Sub SuchleisteAnlegen() Dim strSymbolleiste As String strSymbolleiste = "Suchen-Symbolleiste" SteuerelementAnlegen strSymbolleiste, msoControlButton, "Suche starten" SteuerelementAnlegen strSymbolleiste, msoControlButton, "Weitersuchen" SteuerelementAnlegen strSymbolleiste, msoControlComboBox, "Im Feld" SteuerelementAnlegen strSymbolleiste, msoControlEdit, "Suchen nach" SteuerelementAnlegen strSymbolleiste, msoControlComboBox, "Vergleichen" End Sub
Neue Symbolleisten-Steuerelemente legen Sie mit der Add-Methode des Control-Objekts an. Den Steuerelementtyp geben Sie über die Type-Eigenschaft vor. Die Prozedur aus Quellcode 1 können Sie universell zum Erzeugen von Schaltflächen, Text- und Kombinationsfeldern einsetzen. Der Parameter Symbolleiste bestimmt die Symbolleiste, der das Steuerelement hinzugefügt werden soll. Als Typ geben Sie eine der drei Konstanten aus Tab. 1 an.
Konstante |
Wert |
Steuerelementtyp |
msoControlButton |
1 |
Schaltflächen |
msoControlEdit |
2 |
Textfelder |
msoControlComboBox |
4 |
Kombinationsfelder Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ... den kompletten Artikel im PDF-Format mit Beispieldatenbank diesen und alle anderen Artikel mit dem Jahresabo |