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“ 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.
Ein Beschriftungsfeld (Label) ist für beschreibenden Text gedacht und nicht,
um Werte zu speichern. Die Beschriftung wird in der Eigenschaft Caption
gespeichert.
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.
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.
Textfelder sind die wohl universellsten Steuerelemente. In einem Textfeld (TextBox)
können beliebige Werte eingegeben werden, die in der Value
-Eigenschaft
gespeichert werden.
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.
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.
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.
Ein Umschaltfeld (ToggleButton) unterscheidet sich von Kontrollkästchen nur optisch, inhaltlich sind sie im Grunde identisch.
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.
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
.
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.
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.
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.
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.