UserForm in Excel erstellen: Schritt-für-Schritt-Tutorial mit Drop‑Down-Listen (ComboBoxen)
Dieses Tutorial zeigt dir Schritt für Schritt, wie du in Excel eine UserForm (Eingabemaske) mit Drop-Down-Listen (ComboBoxen) erstellst.
Wir erstellen ein Beispiel, in dem ein Benutzer seinen Namen eingibt und eine Abteilung sowie eine Priorität aus Drop-Down-Menüs auswählt.
Schritt 1: Den VBA-Editor öffnen
- Öffne Excel.
- Drücke
ALT+F11, um den VBA-Editor zu öffnen. - Gehe im Menü auf Einfügen -> UserForm.
Schritt 2: Das Design der UserForm
Nun siehst du ein leeres Fenster (UserForm1) und eine Werkzeugsammlung (Toolbox).
- Name ändern: Klicke auf die UserForm und ändere im Eigenschaften-Fenster (links unten) den Namen auf
frmEingabeund die Beschriftung (Caption) auf "Daten erfassen". - Steuerelemente hinzufügen:
- Label: Erstelle drei Beschriftungen (Name, Abteilung, Priorität).
- TextBox: Füge eine TextBox für den Namen ein (Name:
txtName). - ComboBox: Füge zwei ComboBoxen ein (Name:
cboAbteilungundcboPriorität). - CommandButton: Füge einen Button hinzu (Name:
btnSpeichern, Caption: "Speichern").
Schritt 3: Die Drop-Down-Listen füllen
Damit die Drop-Down-Listen beim Öffnen der Maske gefüllt sind, nutzen wir das Initialize-Ereignis der UserForm.
- Mache einen Rechtsklick auf die UserForm und wähle Code anzeigen.
- Kopiere folgenden Code hinein:
Private Sub UserForm_Initialize()
' Drop-Down für Abteilungen füllen
With cboAbteilung
.AddItem "IT"
.AddItem "Marketing"
.AddItem "Vertrieb"
.AddItem "Buchhaltung"
End With
' Drop-Down für Priorität füllen
With cboPriorität
.AddItem "Niedrig"
.AddItem "Mittel"
.AddItem "Hoch"
End With
' Standardwert setzen (optional)
cboPriorität.ListIndex = 1 ' Wählt standardmäßig "Mittel" aus
End Sub
Schritt 4: Daten in das Excel-Blatt schreiben
Jetzt programmieren wir den "Speichern"-Button, damit die Auswahl in die Tabelle übertragen wird.
- Doppelklicke im Design-Modus auf den Button Speichern.
- Füge diesen Code ein:
Private Sub btnSpeichern_Click()
Dim ws As Worksheet
Dim lastRow As Long
Set ws = ThisWorkbook.Sheets("Tabelle1") ' Stelle sicher, dass das Blatt so heißt
' Prüfen, ob Felder ausgefüllt sind
If txtName.Value = "" Or cboAbteilung.Value = "" Then
MsgBox "Bitte fülle alle Felder aus!", vbExclamation
Exit Sub
End If
' Nächste freie Zeile finden
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1
' Daten übertragen
ws.Cells(lastRow, 1).Value = txtName.Value
ws.Cells(lastRow, 2).Value = cboAbteilung.Value
ws.Cells(lastRow, 3).Value = cboPriorität.Value
' Felder leeren für nächste Eingabe
txtName.Value = ""
cboAbteilung.ListIndex = -1
cboPriorität.ListIndex = 1
MsgBox "Daten erfolgreich gespeichert!", vbInformation
End Sub
Schritt 5: Die UserForm aufrufen
Du brauchst ein normales Makro, um das Fenster aus Excel heraus zu starten.
- Gehe im VBA-Editor auf Einfügen -> Modul.
- Schreibe diesen Code hinein:
Sub FormularAnzeigen()
frmEingabe.Show
End Sub
Schritt 6: Das Formular testen
- Gehe zurück zu Excel.
- Erstelle eine Schaltfläche (über Registerkarte Entwicklertools -> Einfügen -> Schaltfläche).
- Weise der Schaltfläche das Makro
FormularAnzeigenzu. - Klicke auf die Schaltfläche, wähle deine Daten aus den Drop-Downs aus und klicke auf Speichern.
Profi-Tipps für Drop-Downs:
- Werte aus Zellen laden: Wenn deine Liste in Excel steht (z.B. A1:A10), kannst du sie so laden:
cboAbteilung.List = Range("A1:A10").Value - Nur Auswahl erlauben: Um zu verhindern, dass Benutzer eigenen Text in die ComboBox schreiben, stelle im Eigenschaften-Fenster den Style auf
2 - fmStyleDropDownList. - Alphabetisch sortieren: VBA sortiert ComboBoxen nicht automatisch. Wenn die Liste lang ist, sortiere die Quelldaten in Excel vorab.
Wichtig: Speichere deine Excel-Datei unbedingt als Excel-Arbeitsmappe mit Makros (.xlsm) ab, sonst geht der Code verloren!