Steuerelemente

Die einzelnen Steuerelemente der Werkzeugleiste haben zahlreiche verschiedene Eigenschaften. Die meisten werden auch im Eigenschaftenfenster angezeigt. Hier können nur die Wichtigsten vorgestellt werden.

Objekte auswählen Objekte auswählen

„Objekte auswählen“ ist eigentlich kein Steuerelement. Solange es aktiv ist, kann man mit der Maus die Steuerelemente, die sich schon auf dem Formularentwurf befinden, auswählen, verschieben und deren Größe verändern. Ist dagegen in der Werkzeugsammlung etwas anderes als „Objekte auswählen“ aktiv, verändert sich der Mauszeiger, sobald sich die Maus über dem Formularentwurf befindet und man kann ein entsprechendes Steuerelement einfügen.

Beschriftungsfeld Beschriftungsfeld

Ein Beschriftungsfeld (Label) ist für beschreibenden Text gedacht und nicht, um Werte zu speichern. Die Beschriftung wird in der Eigenschaft Caption gespeichert.

Anzeige Anzeige

Ein Anzeige-Steuerelement (Image) dient zur Anzeige von Bildern (bmp, cur, gif, ico, jpg, wmf). Genau wie ein Beschriftungsfeld ist es nicht zum Speichern von Werten gedacht. Das Bild selbst wird in der Picture-Eigenschaft gespeichert.

Befehlsschaltfläche Befehlsschaltfläche

Eine Befehlsschaltfläche (CommandButton) ist dafür gedacht, VBA-Code zu starten. Die Beschriftung wird in der Caption-Eigenschaft gespeichert. Man kann das Click-Ereignis der Befehlsschaltfläche auch per Code auslösen, indem man die Value-Eigenschaft auf True setzt.

Textfeld Textfeld

Textfelder sind die wohl universellsten Steuerelemente. In einem Textfeld (TextBox) können beliebige Werte eingegeben werden, die in der Value-Eigenschaft gespeichert werden.

Drehfeld Drehfeld

Ein Drehfeld (SpinButton) ist für Ganzzahlen gedacht. Klickt man auf den oberen Knopf, steigt die Value-Eigenschaft, der untere Knopf senkt ihn. Der aktuelle Wert wird leider nicht angezeigt, deswegen wird in der Praxis häufig im Formular neben einem Drehfeld noch ein Textfeld oder ein Bezeichnungsfeld angebracht, und der Value per Code dort angezeigt.

Mit den Eigenschaften Min und Max kann man den Wertebereich des Drehfeldes angeben, und mit SmallChange, um wie viel sich der Wert verändert.

Bildlaufleiste Bildlaufleiste

Eine Bildlaufleiste (ScrollBar) funktioniert technisch genau wie ein Drehfeld. Sie kann aber sowohl Waagerecht als auch Senkrecht angebracht werden. Darüber hinaus besitzt sie noch eine LargeChange-Eigenschaft, die angibt, um wie viel sich der Value verändert, wenn man auf den „Hintergrund“ der Bildlaufleiste klickt; also irgendwo zwischen den Pfeilen oben bzw. unten einerseits und dem Schieberegler andererseits.

Kontrollkästchen Kontrollkästchen

Mit Hilfe eines Kontrollkästchen (CheckBox) kann man einen Ja/Nein-Wert auswählen. Falls die Eigenschaft TripleState auf True gesetzt wird, ist auch der Wert Null für die Value-Eigenschaft zulässig.

Des Weiteren haben Kontrollkästchen noch eine Caption-Eigenschaft, mit der das Kontrollkästchen beschriftet werden kann.

Umschaltfeld Umschaltfeld

Ein Umschaltfeld (ToggleButton) unterscheidet sich von Kontrollkästchen nur optisch, inhaltlich sind sie im Grunde identisch.

Rahmen Rahmen

Mit einem Rahmen (Frame) kann man andere Steuerelemente optisch zusammenhängend gruppieren. Er speichert selbst keine Werte. Interessant für die Dateneingabe werden Rahmen allerdings erst im Zusammenspiel mit Optionsfeldern.

Optionsfeld Optionsfeld

Fügt man in einem Formular einen Rahmen ein, und in diesem mehrere Optionsfelder, so kann stets nur ein einziges Optionsfeld (OptionButton) ausgewählt werden. Jedes Optionsfeld hat dabei seine eigene Value-Eigenschaft. Wählt man ein Optionsfeld aus, erhält es den Wert True, ansonsten hat es den Wert False.

Kombinationsfeld Kombinationsfeld

Ein Kombinationsfeld (ComboBox) dient des Auswahl eines einzelnen Wertes aus einer Liste. Dazu müssen die auswählbaren Werte erst definiert werden. Üblicherweise macht man das beim Laden des Formulars.

Die angezeigte Liste des Kombinationsfeldes wird in der List-Eigenschaft gespeichert. Es gibt zwei verschiedene Arten, wie man einem Kombinationsfeld eine Liste zuordnen kann: An die List-Eigenschaft kann man ein Variant-Array übergeben, oder mit der AddItem-Methode Listeneinträge hinzufügen.

Private Sub UserForm_Initialize()
Dim Liste(2) As Variant

Liste(0) = "A"
Liste(1) = "B"
Liste(2) = "C"

Me.ComboBox1.List = Liste
Me.ComboBox1.AddItem ("D")
Me.ComboBox1.AddItem ("E")
End Sub

In diesem Beispiel wurden beide Möglichkeiten genutzt, um einem Kombinationsfeld insgesamt 5 Einträge zuzuordnen.

An die List-Eigenschaft kann man auch ein zweidimensionales Array übergeben. Dann kann man mit der BoundColumn-Eigenschaft angeben, welche Spalte des Arrays den Wert des Kombinationsfelds enthalten soll, mit der ColumnCount-Eigenschaft, wie viele Spalten angezeigt werden, und mit der ListWidth-Eigenschaft, wie breit die angezeigten Spalten sein sollen.

Listenfeld Listenfeld

Ein Listenfeld (ListBox) funktioniert im Prinzip genau wie ein Kombinationsfeld.

Bei Bedarf kann man allerdings die MultiSelect-Eigenschaft eines Listenfelds auf einen anderen Wert als 0 setzen. Dann kann man mehr als nur einen Wert aus der Liste auswählen. Die Value-Eigenschaft ist dann immer Null. Um herauszufinden, welche Listeneinträge gerade markiert sind, muss man dann die Selected-Auflistung nutzen.

Private Sub ListBox1_Change()
Dim i As Integer

For i = 0 To Me.ListBox1.ListCount - 1
    If Me.ListBox1.Selected(i) = True Then
        Debug.Print Me.ListBox1.List(i)
    End If
Next

End Sub

In diesem Beispiel wird eine Schleife für jeden Eintrag in einem Listenfeld durchlaufen, dessen MultiSelect-Eigenschaft auf True steht. Die Anzahl der Einträge wird mit der ListCount-Eigenschaft ermittelt. Bei ausgewählten Einträgen gibt die Selected-Auflistung True zurück und der entsprechende Wert des List-Arrays wird ins Direktfenster geschrieben.

Listenfeld Register

Ein Register (TabStrip) ist ein in erster Linie eher grafisches Steuerelement, das nicht zum Speichern von Daten gedacht ist. Es besteht aus mehreren Karteireitern (Tabs), die man im Entwurfsmodus nach einem Rechtsklick umbenennen bzw. neue Tabs hinzufügen kann. Unterhalb der eigentlichen Reiter befindet sich ein grafisch umgrenzter Raum, über den man weitere Steuerelemente legen kann.

Wechselt ein User im Register von einem Reiter zu einem anderen, passiert allerdings erst einmal überhaupt nichts. Register sind nämlich dafür gedacht, dass beim Wechsel einem Reiter zu einem anderen Code gestartet wird. Dieser Code könnte z. B. den Inhalt der Steuerelemente innerhalb des grafischen Bereichs des Registers ändern.

Beim Wechsel eines Reiters wird das Change-Ereignis ausgelöst. Die Reiter stellen wiederum Tab-Objekte dar, die in der Tabs-Auflistung enthalten sind. Der folgende Code gibt beim Wechsel eines Reiters dessen Beschriftung zurück.

Private Sub TabStrip1_Change()
MsgBox TabStrip1.SelectedItem.Caption
End Sub

In der Praxis werden Reiter selten eingesetzt. Die grafisch identischen Multiseiten sind üblicherweise effektiver.

Listenfeld Multiseiten

Ein Multiseite (MultiPage) sieht genauso aus wie ein Register. Befinden sich allerdings weitere Steuerelemente im Bereich einer Multiseite, und der User wechselt den Karteireiter, sind die bisher angezeigten Steuerelemente nicht mehr zu sehen. Jeder Reiter hat seinen eigenen Anzeigebereich, auf dem man jeweils separate Steuerelemente platzieren kann.

Markiert man im Formularentwurf einen der Reiter, kann man nach einem Rechtsklick den Reiter umbenennen oder neue Reiter hinzufügen.