Excel VBA AI Assistant LogoExcel VBA AI Assistant
    Einsteiger
    VBA
    UserForms
    UI-Design
    Excel
    Empfohlen

    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.

    VBA AI Team
    Veröffentlicht am 24. Januar 2025
    16 Min. Lesezeit
    Zuletzt bearbeitet: 29. März 2026

    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?

    KriteriumInputBoxUserForm
    Einzelne Eingabe✅ IdealOverkill
    3+ EingabefelderUmständlich✅ Übersichtlich
    Dropdown-AuswahlNicht möglich✅ ComboBox/ListBox
    EingabevalidierungNur Typ-Prüfung✅ Beliebig komplex
    WiederverwendbarNein✅ 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.

    VBA Werkzeugsammlung (Toolbox) mit allen Steuerelementen

    Die wichtigsten Steuerelemente:

    SteuerelementPräfixVerwendung
    LabellblBeschriftungen, nicht editierbar
    TextBoxtxtTexteingabe durch den Benutzer
    CommandButtonbtn oder cmdSchaltflächen für Aktionen
    ComboBoxcboDropdown-Liste (eine Auswahl)
    CheckBoxchkJa/Nein-Auswahl
    ListBoxlstListe mit Einfach-/Mehrfachauswahl
    OptionButtonoptExklusive Auswahl (Radio-Button)
    FramefraGruppierung 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:

    VBA UserForm Beispiel – Adressliste mit vier Eingabefeldern und Buttons

    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:

    1. Die Validierung prüft, ob Vorname und Nachname ausgefüllt sind und die E-Mail ein @ und einen Punkt enthält.
    2. ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1 springt zur letzten beschriebenen Zeile in Spalte A und addiert 1 – das ist die nächste freie Zeile.
    3. Die Werte werden mit Trim bereinigt (führende/folgende Leerzeichen entfernt) und in die Spalten A–E geschrieben.
    4. 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äge
    • fmMultiSelectExtended – 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.

    VBA Assistant – Prompt zur automatischen Erstellung einer UserForm-Eingabemaske

    Kostenlos testen – 10 Anfragen inklusive, keine Registrierung nötig.

    UserForms schneller entwickeln

    Der VBA Assistant erstellt komplette UserForms aus einer Textbeschreibung – inklusive Layout, Event-Handler und Datenübertragung.