UserForm in Excel erstellen: Schritt-für-Schritt-Tutorial mit Drop‑Down-Listen (ComboBoxen)

Melden

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

  1. Öffne Excel.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Gehe im Menü auf Einfügen -> UserForm.

Schritt 2: Das Design der UserForm

Nun siehst du ein leeres Fenster (UserForm1) und eine Werkzeugsammlung (Toolbox).

  1. Name ändern: Klicke auf die UserForm und ändere im Eigenschaften-Fenster (links unten) den Namen auf frmEingabe und die Beschriftung (Caption) auf "Daten erfassen".
  2. 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: cboAbteilung und cboPrioritä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.

  1. Mache einen Rechtsklick auf die UserForm und wähle Code anzeigen.
  2. 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.

  1. Doppelklicke im Design-Modus auf den Button Speichern.
  2. 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.

  1. Gehe im VBA-Editor auf Einfügen -> Modul.
  2. Schreibe diesen Code hinein:
Sub FormularAnzeigen()
    frmEingabe.Show
End Sub

Schritt 6: Das Formular testen

  1. Gehe zurück zu Excel.
  2. Erstelle eine Schaltfläche (über Registerkarte Entwicklertools -> Einfügen -> Schaltfläche).
  3. Weise der Schaltfläche das Makro FormularAnzeigen zu.
  4. 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!

0