User Forms professionell gestalten: Der komplette Guide
VBA-UserForms Schritt für Schritt professionell gestalten: Controls wie TextBox, ComboBox und ListBox, Eingabevalidierung, Ereignisse und sauberes Layout.
VBA UserForms sind grafische Benutzeroberflächen für Excel-Makros. Statt kryptischer Eingabeaufforderungen erstellen Sie professionelle Formulare mit Buttons, Dropdown-Menüs und Validierung. Dieser Beitrag zeigt alles von den Grundlagen bis zu Multi-Page-Formularen.
UserForm erstellen und designen
Schritt 1: UserForm einfügen
- VBA-Editor (Alt + F11)
- Einfügen → UserForm
- Leeres Formular erscheint + Werkzeugkasten
Schritt 2: Controls hinzufügen
Aus der Toolbox ziehen:
- Label: Text/Beschriftung
- TextBox: Eingabefeld
- ComboBox: Dropdown-Menü
- ListBox: Auswahlliste
- CommandButton: Button (OK, Abbrechen)
- CheckBox: Ja/Nein-Option
- OptionButton: Exklusive Auswahl
Controls: TextBox, ComboBox, ListBox
TextBox (Eingabefeld)
Private Sub cmdOK_Click()
Dim name As String
name = txtName.Value
MsgBox "Hallo " & name
End Sub
ComboBox (Dropdown)
Private Sub UserForm_Initialize()
' ComboBox füllen
cboRegion.AddItem "Nord"
cboRegion.AddItem "Süd"
cboRegion.AddItem "Ost"
cboRegion.AddItem "West"
End Sub
ListBox (Mehrfachauswahl)
lstProdukte.MultiSelect = fmMultiSelectMulti
' Ausgewählte Elemente auslesen:
Dim i As Long
For i = 0 To lstProdukte.ListCount - 1
If lstProdukte.Selected(i) Then
Debug.Print lstProdukte.List(i)
End If
Next i
Validierung und Fehlerbehandlung
Private Sub cmdSpeichern_Click()
' Validierung
If Len(txtName.Value) = 0 Then
MsgBox "Bitte Namen eingeben!", vbExclamation
txtName.SetFocus
Exit Sub
End If
If Not IsNumeric(txtAlter.Value) Then
MsgBox "Alter muss eine Zahl sein!", vbExclamation
Exit Sub
End If
' Daten speichern
Dim nextRow As Long
nextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(nextRow, 1).Value = txtName.Value
Cells(nextRow, 2).Value = txtAlter.Value
Unload Me
End Sub
Dynamische ComboBoxen
ComboBox aus Excel-Range füllen:
Private Sub UserForm_Initialize()
Dim rng As Range
Set rng = Worksheets("Stammdaten").Range("A2:A100")
Dim cell As Range
For Each cell In rng
If cell.Value <> "" Then
cboKunde.AddItem cell.Value
End If
Next cell
End Sub
Multi-Page Formulare
Für komplexe Formulare nutzen Sie MultiPage Control:
- MultiPage aus Toolbox einfügen
- Rechtsklick → “Neue Seite” für zusätzliche Tabs
- Pro Seite unterschiedliche Controls
Private Sub cmdWeiter_Click()
' Zur nächsten Seite
If MultiPage1.Value < 2 Then
MultiPage1.Value = MultiPage1.Value + 1
End If
End Sub
Daten in Excel schreiben
Private Sub cmdSpeichern_Click()
Dim ws As Worksheet
Set ws = Worksheets("Daten")
Dim nextRow As Long
nextRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1
ws.Cells(nextRow, 1).Value = txtName.Value
ws.Cells(nextRow, 2).Value = cboRegion.Value
ws.Cells(nextRow, 3).Value = txtBetrag.Value
ws.Cells(nextRow, 4).Value = Date
MsgBox "Gespeichert!", vbInformation
Unload Me
End Sub
Formular mit Klasse verbinden
Für professionelle Architektur: Klasse für Geschäftslogik, UserForm nur für UI.
' Klassenmodul: clsKunde
Public Name As String
Public Region As String
Public Function Speichern() As Boolean
' Geschäftslogik hier
Speichern = True
End Function
' In UserForm:
Private Sub cmdOK_Click()
Dim kunde As New clsKunde
kunde.Name = txtName.Value
kunde.Region = cboRegion.Value
kunde.Speichern
End Sub
Login-Form Template
Private Sub cmdLogin_Click()
Dim user As String, pw As String
user = txtUsername.Value
pw = txtPassword.Value
' Validierung gegen Tabelle
Dim wsUsers As Worksheet
Set wsUsers = Worksheets("Users")
Dim found As Range
Set found = wsUsers.Range("A:A").Find(user)
If Not found Is Nothing Then
If found.Offset(0, 1).Value = pw Then
MsgBox "Login erfolgreich!"
Unload Me
Else
MsgBox "Falsches Passwort!", vbCritical
End If
Else
MsgBox "Benutzer nicht gefunden!", vbCritical
End If
End Sub
Fazit
UserForms machen VBA-Makros benutzerfreundlich:
- Professionelle GUI statt InputBox
- Validierung verhindert Fehler
- ComboBoxen für Auswahlen
- Multi-Page für komplexe Formulare
Das könnte Sie auch interessieren:
- Objektorientierte Programmierung in VBA
- VBA-Debugging für Profis
- VBA-Befehle für Excel: Die 10 wichtigsten in der Übersicht
- Professionelle Excel-Lösungen von PREDOC