VBA UserForm erstellen – Schritt-für-Schritt-Anleitung für Einsteiger
Erstellen Sie Ihre erste VBA UserForm: Von der leeren Form bis zur fertigen Eingabemaske mit Validierung, Dropdown-Listen und Datenübertragung ins Tabellenblatt.
Excel-Tabellen sind großartig für Daten – aber als Eingabeoberfläche für Anwender oft unpraktisch. Wer kennt es nicht: Einträge landen in der falschen Spalte, Pflichtfelder bleiben leer, Dropdown-Werte werden falsch getippt. UserForms lösen genau diese Probleme. Sie erstellen ein eigenes Dialogfenster mit Textfeldern, Dropdown-Listen, Checkboxen und Buttons – und steuern exakt, welche Daten wie in die Tabelle geschrieben werden.
Dieser Leitfaden führt Sie von der leeren Form bis zur fertigen Eingabemaske. Jedes Code-Beispiel ist komplett und kann direkt übernommen werden.
Schneller zum Ziel? Der VBA Code Generator erstellt komplette UserForms aus einer Textbeschreibung – inklusive Layout, Event-Handler und Datenübertragung.
Was ist eine UserForm?
Eine UserForm ist ein benutzerdefiniertes Dialogfenster innerhalb von Excel. Im Gegensatz zur einfachen InputBox bietet eine UserForm:
- Mehrere Eingabefelder gleichzeitig – statt einer einzigen Abfrage pro InputBox
- Dropdown-Listen und Checkboxen – für kontrollierte, fehlerfreie Eingaben
- Eingabevalidierung – Pflichtfelder prüfen, bevor Daten gespeichert werden
- Professionelles Aussehen – Labels, Gruppierungen und logisches Layout
Wann eine UserForm statt InputBox?
| Kriterium | InputBox | UserForm |
|---|---|---|
| Einzelne Eingabe | ✅ Ideal | Overkill |
| 3+ Eingabefelder | Umständlich | ✅ Übersichtlich |
| Dropdown-Auswahl | Nicht möglich | ✅ ComboBox/ListBox |
| Eingabevalidierung | Nur Typ-Prüfung | ✅ Beliebig komplex |
| Wiederverwendbar | Nein | ✅ Ja |
Ein typisches UserForm-Formular sieht so aus: Links stehen Labels (Beschriftungen), rechts daneben TextBoxen für die Eingabe, darunter eine ComboBox für die Auswahl aus vordefinierten Werten, und am unteren Rand zwei Buttons – "Speichern" und "Abbrechen".
UserForm erstellen – Die ersten Schritte
1. VBA-Editor öffnen (Alt + F11)
Drücken Sie Alt + F11, um den Visual Basic Editor zu öffnen. Links sehen Sie den Projekt-Explorer mit Ihren Arbeitsmappen und Modulen.
2. UserForm einfügen (Einfügen → UserForm)
Klicken Sie im Menü auf Einfügen → UserForm. Es erscheint eine leere, graue Fläche – Ihre zukünftige Eingabemaske. Im Projekt-Explorer taucht die Form als neues Objekt auf (standardmäßig UserForm1).
Tipp: Benennen Sie die UserForm sofort um. Rechtsklick auf die Form → Eigenschaften → (Name) ändern auf z.B. frmAdresse. Das Präfix frm ist die übliche Konvention für Forms.
3. Werkzeugsammlung kennenlernen
Sobald die UserForm aktiv ist, erscheint die Werkzeugsammlung (Toolbox). Falls nicht: Menü → Ansicht → Werkzeugsammlung.

Die wichtigsten Steuerelemente:
| Steuerelement | Präfix | Verwendung |
|---|---|---|
| Label | lbl | Beschriftungen, nicht editierbar |
| TextBox | txt | Texteingabe durch den Benutzer |
| CommandButton | btn oder cmd | Schaltflächen für Aktionen |
| ComboBox | cbo | Dropdown-Liste (eine Auswahl) |
| CheckBox | chk | Ja/Nein-Auswahl |
| ListBox | lst | Liste mit Einfach-/Mehrfachauswahl |
| OptionButton | opt | Exklusive Auswahl (Radio-Button) |
| Frame | fra | Gruppierung von Steuerelementen |
Ziehen Sie ein Steuerelement aus der Toolbox auf die UserForm und passen Sie Position und Größe an. Über das Eigenschaftenfenster (F4) stellen Sie Name, Beschriftung (Caption), Schriftgröße und weitere Optionen ein.
Praxisbeispiel: Eingabemaske für eine Adressliste
Wir bauen eine vollständige Eingabemaske mit vier Feldern, Validierung und Datenübertragung ins Tabellenblatt.
1. Layout entwerfen
Erstellen Sie eine neue UserForm (frmAdresse) und platzieren Sie folgende Steuerelemente:
- 4 Labels:
lblVorname,lblNachname,lblEmail,lblTelefon - 4 TextBoxen:
txtVorname,txtNachname,txtEmail,txtTelefon - 2 Buttons:
btnSpeichern(Caption: "Speichern"),btnAbbrechen(Caption: "Abbrechen")
Setzen Sie die Label-Captions auf "Vorname:", "Nachname:", "E-Mail:" und "Telefon:". Ordnen Sie Labels links und TextBoxen rechts daneben an. Die Buttons kommen unter die Eingabefelder.
Für die UserForm selbst setzen Sie:
Caption= "Neue Adresse erfassen"StartUpPosition= 1 (Bildschirmmitte)
Das fertige Formular sieht dann so aus:

2. Daten ins Tabellenblatt übertragen
Der folgende Code gehört in das Codemodul der UserForm (Doppelklick auf die Form oder den Button). Er prüft die Eingaben, findet die nächste leere Zeile im Tabellenblatt "Adressen" und überträgt die Daten:
Option Explicit Private Sub btnSpeichern_Click() ' --- Validierung --- If Len(Trim(txtVorname.Value)) = 0 Then MsgBox "Bitte einen Vornamen eingeben.", vbExclamation, "Pflichtfeld" txtVorname.SetFocus Exit Sub End If If Len(Trim(txtNachname.Value)) = 0 Then MsgBox "Bitte einen Nachnamen eingeben.", vbExclamation, "Pflichtfeld" txtNachname.SetFocus Exit Sub End If If InStr(txtEmail.Value, "@") = 0 Or InStr(txtEmail.Value, ".") = 0 Then MsgBox "Bitte eine gueltige E-Mail-Adresse eingeben.", vbExclamation, "Validierung" txtEmail.SetFocus Exit Sub End If ' --- Naechste leere Zeile finden --- Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Adressen") Dim nextRow As Long nextRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1 ' --- Daten uebertragen --- ws.Cells(nextRow, 1).Value = Trim(txtVorname.Value) ws.Cells(nextRow, 2).Value = Trim(txtNachname.Value) ws.Cells(nextRow, 3).Value = Trim(txtEmail.Value) ws.Cells(nextRow, 4).Value = Trim(txtTelefon.Value) ws.Cells(nextRow, 5).Value = Now ' Zeitstempel ' --- Formular leeren --- txtVorname.Value = "" txtNachname.Value = "" txtEmail.Value = "" txtTelefon.Value = "" txtVorname.SetFocus MsgBox "Adresse gespeichert (Zeile " & nextRow & ").", vbInformation End Sub Private Sub btnAbbrechen_Click() Unload Me End Sub
Was passiert hier Schritt für Schritt:
- Die Validierung prüft, ob Vorname und Nachname ausgefüllt sind und die E-Mail ein
@und einen Punkt enthält. ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1springt zur letzten beschriebenen Zeile in Spalte A und addiert 1 – das ist die nächste freie Zeile.- Die Werte werden mit
Trimbereinigt (führende/folgende Leerzeichen entfernt) und in die Spalten A–E geschrieben. - Nach dem Speichern werden alle Felder geleert und der Fokus auf das erste Feld gesetzt – bereit für die nächste Eingabe.
3. UserForm aufrufen
Fügen Sie ein neues Modul ein (Einfügen → Modul) und erstellen Sie eine Sub zum Anzeigen der Form:
Sub AdresseErfassen() frmAdresse.Show End Sub
Diese Sub können Sie einem Button im Tabellenblatt zuweisen (Rechtsklick auf Button → Makro zuweisen → AdresseErfassen).
Alternative: Automatischer Start beim Öffnen der Datei:
Fügen Sie diesen Code in das Modul DieseArbeitsmappe (ThisWorkbook) ein:
Private Sub Workbook_Open() frmAdresse.Show End Sub
Damit öffnet sich die Eingabemaske automatisch, sobald die Excel-Datei geöffnet wird.
Die wichtigsten Steuerelemente im Detail
TextBox – Texteingabe
Die TextBox ist das Arbeitspferd jeder UserForm. Wichtige Eigenschaften:
- MaxLength – Maximale Zeichenanzahl (0 = unbegrenzt)
- MultiLine – Mehrzeilige Eingabe erlauben (True/False)
- PasswordChar – Zeichen zur Maskierung (z.B.
*für Passwortfelder) - ScrollBars – Scrollbalken für mehrzeilige TextBoxen
Code-Beispiel: Eingabe auf Zahlen beschränken:
Private Sub txtTelefon_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) ' Nur Ziffern, Plus, Leerzeichen und Bindestrich erlauben Select Case KeyAscii Case 48 To 57 ' 0-9 Case 43 ' + Case 32 ' Leerzeichen Case 45 ' Bindestrich Case Else KeyAscii = 0 ' Eingabe blockieren End Select End Sub
ComboBox – Dropdown-Auswahl
Die ComboBox zeigt eine vordefinierte Liste an. Items werden typischerweise beim Initialisieren der Form befüllt:
Private Sub UserForm_Initialize() With cboAnrede .Clear .AddItem "Herr" .AddItem "Frau" .AddItem "Divers" .ListIndex = 0 ' Ersten Eintrag vorauswählen End With With cboAbteilung .Clear .AddItem "Vertrieb" .AddItem "Marketing" .AddItem "IT" .AddItem "Personal" .AddItem "Buchhaltung" End With End Sub
Tipp: Setzen Sie die Eigenschaft Style auf fmStyleDropDownList, damit der Benutzer nur aus der Liste wählen kann und keine Freitext-Eingabe möglich ist.
CheckBox und OptionButton
Beide bieten Auswahlmöglichkeiten, aber mit einem wichtigen Unterschied:
- CheckBox: Mehrere Optionen gleichzeitig auswählbar (z.B. "Newsletter abonnieren" + "AGB akzeptiert")
- OptionButton: Nur eine Option innerhalb einer Gruppe auswählbar (z.B. "Herr" oder "Frau" oder "Divers")
Gruppierung mit Frame-Control: Damit OptionButtons korrekt funktionieren, müssen sie in einem Frame gruppiert sein. Alle OptionButtons innerhalb eines Frames bilden eine Gruppe – das Auswählen eines Buttons deselektiert automatisch die anderen in derselben Gruppe.
Private Sub btnSpeichern_Click() Dim anrede As String If optHerr.Value = True Then anrede = "Herr" ElseIf optFrau.Value = True Then anrede = "Frau" Else anrede = "Divers" End If ' Newsletter-Status (CheckBox) Dim newsletter As Boolean newsletter = chkNewsletter.Value End Sub
ListBox – Mehrzeilige Auswahl
Die ListBox eignet sich für längere Listen, aus denen der Benutzer einen oder mehrere Einträge auswählen kann.
Wichtige Eigenschaft: MultiSelect
fmMultiSelectSingle– Nur ein Eintrag auswählbar (Standard)fmMultiSelectMulti– Klick selektiert/deselektiert einzelne EinträgefmMultiSelectExtended– Shift+Klick und Strg+Klick wie im Explorer
Private Sub UserForm_Initialize() With lstProdukte .Clear .AddItem "Excel Grundkurs" .AddItem "VBA Einsteiger" .AddItem "VBA Fortgeschritten" .AddItem "Power Query" .AddItem "Dashboard Design" .MultiSelect = fmMultiSelectMulti End With End Sub ' Ausgewählte Einträge auslesen: Private Sub btnAuswahl_Click() Dim i As Long Dim auswahl As String For i = 0 To lstProdukte.ListCount - 1 If lstProdukte.Selected(i) Then auswahl = auswahl & lstProdukte.List(i) & vbNewLine End If Next i MsgBox "Ausgewählt:" & vbNewLine & auswahl End Sub
Häufige Fehler bei UserForms
1. UserForm_Initialize nicht nutzen
Wer ComboBoxen oder ListBoxen nicht im UserForm_Initialize-Event befüllt, sieht beim Öffnen leere Dropdown-Listen. Das Initialize-Event wird automatisch aufgerufen, bevor die Form angezeigt wird – der perfekte Ort für Standardwerte und Listen.
2. Unload Me vs. Me.Hide
Beides schließt die UserForm, aber mit unterschiedlichem Ergebnis:
Unload Me– Entfernt die Form aus dem Speicher. Alle Eingaben gehen verloren.Me.Hide– Versteckt die Form, behält aber alle Werte. Der aufrufende Code kann danach auf die Steuerelemente zugreifen.
Verwenden Sie Me.Hide, wenn der aufrufende Code die eingegebenen Werte lesen soll:
' Im aufrufenden Modul: Sub DatenAbfragen() frmEingabe.Show vbModal ' Form ist jetzt nur versteckt, Werte noch verfügbar: Dim name As String name = frmEingabe.txtName.Value Unload frmEingabe ' Erst jetzt aus dem Speicher entfernen End Sub
3. Fehlende Eingabevalidierung
Ohne Validierung landen leere Zellen oder ungültige Daten in der Tabelle. Prüfen Sie Pflichtfelder und Formate immer vor dem Speichern (siehe Praxisbeispiel oben).
4. Steuerelemente nicht benennen
Standard-Namen wie CommandButton1, TextBox3, ComboBox2 machen den Code unlesbar. Verwenden Sie von Anfang an sprechende Namen mit Präfix: btnSpeichern, txtEmail, cboAbteilung. Das spart Stunden beim Debugging.
FAQ
Kann ich eine UserForm ohne VBA-Kenntnisse erstellen?
Die Form selbst können Sie visuell im Editor zusammenklicken – das erfordert kein Programmieren. Sobald die Buttons aber etwas tun sollen (Daten speichern, Felder validieren), brauchen Sie VBA-Code. Der VBA Code Generator kann diesen Code aus einer Textbeschreibung erstellen.
Wie mache ich eine UserForm responsiv?
VBA-UserForms unterstützen keine automatische Größenanpassung wie Webseiten. Sie können aber im UserForm_Resize-Event die Positionen und Größen der Steuerelemente manuell anpassen. Für die meisten Anwendungsfälle genügt es, die Form auf eine feste, sinnvolle Größe einzustellen und StartUpPosition = 1 (Bildschirmmitte) zu verwenden.
Kann ich Bilder in eine UserForm einfügen?
Ja, mit dem Image-Steuerelement. Setzen Sie die Eigenschaft Picture auf eine Bilddatei (BMP, JPG, GIF, ICO). Alternativ können Sie Bilder per Code laden: imgLogo.Picture = LoadPicture("C:\Pfad\logo.bmp"). Beachten Sie: Das Bild wird in die Excel-Datei eingebettet und vergrößert die Dateigröße.
Was ist der Unterschied zwischen modaler und nicht-modaler UserForm?
Eine modale UserForm (frmName.Show vbModal oder einfach .Show) blockiert die Interaktion mit Excel, bis die Form geschlossen wird. Eine nicht-modale UserForm (frmName.Show vbModeless) erlaubt dem Benutzer, gleichzeitig mit dem Tabellenblatt zu arbeiten. Modal ist der Standard und für Eingabemasken fast immer die richtige Wahl.
Wie speichere ich UserForm-Daten in einer Datenbank?
Statt in ein Tabellenblatt können Sie die Daten per ADO-Verbindung in eine Access-Datenbank oder einen SQL Server schreiben. Ersetzen Sie im Speichern-Code die Zeilen mit ws.Cells(...) durch ADO-Code: Connection.Execute "INSERT INTO Tabelle VALUES(...)". Der VBA Assistant kann den passenden ADO-Code für Ihre Datenbank generieren.
UserForm automatisch erstellen lassen
Der VBAssistant AI erstellt komplette UserForms aus einer Textbeschreibung – inklusive Layout, Event-Handler und Datenübertragung. Beschreiben Sie einfach, was das Formular tun soll, und erhalten Sie fertigen VBA-Code.

Kostenlos testen – 10 Anfragen inklusive, keine Registrierung nötig.
Code-Generierung
Automatische VBA-Code-Erstellung durch natürliche Sprache
Code-Analyse
Code verstehen und dokumentieren
Debugging
Intelligente Fehlerfindung und -behebung
Code-Verbesserung
Optimierung und Fehlerbehandlung
UI-Design
UserForms über natürliche Sprache erzeugen
Snippet-Verwaltung
Über 100 vorgefertigte Code-Bausteine
UserForms schneller entwickeln
Der VBA Assistant erstellt komplette UserForms aus einer Textbeschreibung – inklusive Layout, Event-Handler und Datenübertragung.
