Suchleiste für Formulare

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

Schreibe einen Kommentar