Ein einfaches Beispielformular

Ein neues VBA-Formular erstellt man mit UserForm 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
Werkzeugsammlung

Des Weiteren sollte jetzt ein kleines Fenster namens UserForm 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 Textfeld „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 Textfeld und eine Button 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.