Ein neues VBA-Formular erstellt man mit
Einfügen / UserForm
. Im Projekt-Explorer erscheint ein neues Objekt
und wir bekommen ein leeres Formular in der sogenannten „Entwurfsansicht“
angezeigt. Die kleinen Punkte im Formular helfen, die einzufügenden Steuerelemente
gleichmäßig auszurichten. Dazu ist auch der Menüpunkt Format
hilfreich.
Außerdem gibt es am unteren und rechten Rand kleine Ziehpunkte, mit denen die Größe
des Formulars angepasst werden kann.
Werkzeugsammlung |
---|
Des Weiteren sollte jetzt ein kleines Fenster namens
Werkzeugsammlung
angezeigt werden (je nach Version auch „Toolbox“ oder „Toolsammlung“ genannt).
Wenn nicht, kann man es in der Symbolleiste einschalten. Die Werkzeugsammlung zeigt
die Steuerelemente an, die in das Formular eingefügt werden können. Voreingestellt
ist dort „Objekte auswählen“.
Sobald ein anderes Steuerelement ausgewählt ist, verändert sich der Mauszeiger,
wenn er sich über dem Formularentwurf befindet.
Für unser erstes Formular fügen wir jetzt ein Textfeld und eine Befehlsschaltfläche ein. Dazu müssen wir in der Werkzeugsammlung die entsprechenden Steuerelemente auswählen und dann die Stelle, an der wir das Steuerelement im Formular haben wollen, anklicken. Das Formular sollte nun etwa wie folgt aussehen:
UserForm1 |
---|
|
Für VBA ist das Formular einfach ein Objekt
namens UserForm1
. Um es aufzurufen, hat es die Methode Show
.
In diesem Kapitel machen wir das wie folgt aus dem Direktfenster heraus:
UserForm1.Show
Natürlich bewirkt das Formular noch nichts. Es gibt ein Feld, in das man beliebigen Text schreiben kann, und einen Button, bei dem nichts passiert, wenn man darauf klickt. Den entsprechenden Code müssen wir erst noch schreiben: Beim Klicken auf den Button soll der Inhalt des Textfeldes ausgegeben werden.
Machen wir einen Doppelklick im Formularentwurf, öffnet sich ein neues Codefenster.
Es handelt sich um ein typisches Klassenmodul: Das Kombifeld links oben zeigt alle
Objekte des Formulars an, und sobald wir eines davon ausgewählt haben, zeigt das
rechte Kombifeld die Ereignisse dieses Objekts. Aus den Objekten wählen wir nun
CommandButton1
und aus dessen Ereignisliste das Ereignis
Click
. Dort tragen wir folgenden Code ein:
Option Explicit
Private Sub CommandButton1_Click() MsgBox Me.TextBox1.Value End Sub
Wenn wir jetzt das Formular erneut aufrufen, etwas im Textfeld eingeben und dann den Button anklicken, erscheint eine Nachricht, die den Inhalt der Textbox ausgibt.
Das Me-Objekt, welches hier für das Formular
steht, haben wir ja schon kennen gelernt. Das Unterobjekt TextBox1
kann so wie eben aufgerufen werden (Me.TextBox1
), aber das Formular
besitzt auch eine Auflistung namens
Controls
, so dass auch die Schreibweise Me.Controls("TextBox1")
bzw. möglich ist. Letzteres hat den Vorteil, dass der Objektname als String
übergeben werden kann, oder auch mit einer
For-Each Schleife alle
Steuerelemente des Formulars angesprochen werden können.
Value
ist eine Eigenschaft der Textbox, die im Code genauso wie
andere Objekteigenschaften verwendet
werden kann.