ListBox.clear in Excel VBA – So behebst du den Fehler
Schritt-für-Schritt-Anleitung
-
UserForm und ListBox erstellen: Stelle sicher, dass deine UserForm die benötigten ListBoxen enthält. In diesem Beispiel gehen wir davon aus, dass du zwei ListBoxen hast: ListBox2
für Geräte und ListBox3
für Sonden.
-
Daten einlesen: Nutze den folgenden Code, um die Daten in die ListBoxen zu laden:
If Not Sheets(KundenID).Cells(11, 2).Value = "0" Then
L = 12 + Geraetezaehler
With UserForm3
.ListBox2.ColumnCount = 7
.ListBox2.ColumnWidths = "130 Pt;50 Pt; 60 Pt; 70 Pt;50 Pt;50 Pt;50Pt"
.ListBox2.RowSource = Sheets(KundenID).Name & "!" & Range("A13:G" & L).Address
End With
End If
-
ListBox leeren: Um die ListBox2
zu leeren, kannst du den RowSource
-Wert auf einen leeren String setzen:
UserForm3.ListBox2.RowSource = ""
-
Daten neu einlesen: Nach dem Leeren kannst du die Daten erneut in die ListBox laden, entweder durch Setzen eines neuen RowSource
oder durch das Verwenden von AddItem
.
Häufige Fehler und Lösungen
-
Fehler: Nicht näher bezeichneter Fehler bei ListBox2.Clear: Dieser Fehler tritt auf, weil ListBox2
an eine RowSource
gebunden ist. Um dies zu umgehen, setze den RowSource
auf einen leeren String, wie oben beschrieben.
-
Fehlermeldung A21 löschen: Wenn du eine Fehlermeldung erhältst, die sich auf den Bereich A21 bezieht, stelle sicher, dass der Bereich tatsächlich existiert und keine Datenfehler aufweist. Überprüfe auch, ob die Zeilen und Spalten korrekt referenziert sind.
Alternative Methoden
Falls das Leeren der ListBox über RowSource
nicht funktioniert, kannst du auch die List
-Eigenschaft verwenden:
UserForm3.ListBox2.List = Array() ' Leert die ListBox
Eine weitere Möglichkeit besteht darin, die ListBox mit AddItem
zu füllen, anstatt den RowSource
zu verwenden.
Praktische Beispiele
Hier ist ein Beispiel, wie du die ListBoxen in deiner UserForm aktualisieren kannst:
With UserForm3
' ListBox3 leeren und neue Werte einfügen
.ListBox3.Clear
.ListBox3.List = Sheets(KundenID).Range("A21:D27").Value
' ListBox2 leeren und neue Werte einfügen
.ListBox2.RowSource = ""
.ListBox2.RowSource = Sheets(KundenID).Name & "!" & Range("A13:G" & L).Address
End With
Tipps für Profis
-
Verwende AddItem
: Wenn du Flexibilität bei der Datenmanipulation benötigst, ist es oft besser, AddItem
zu verwenden, um Elemente direkt hinzuzufügen. So kannst du auch einfacher kontrollieren, was in die ListBox geladen wird.
-
Debugging: Nutze Debug.Print
zur Fehlersuche. Damit kannst du den aktuellen Status von Variablen oder die Werte in der ListBox während der Ausführung anzeigen.
FAQ: Häufige Fragen
1. Wie kann ich sicherstellen, dass die ListBox immer die aktuellen Daten anzeigt?
Setze den RowSource
der ListBox auf einen leeren String, bevor du neue Daten hinzufügst.
2. Warum funktioniert ListBox.Clear
nicht bei meiner ListBox?
Die ListBox
ist an eine RowSource
gebunden. Du musst den RowSource
zuerst leeren, um die ListBox zu aktualisieren.
3. Gibt es eine Möglichkeit, die ListBox ohne Schließen der UserForm zu aktualisieren?
Ja, du kannst die ListBox einfach über den Code aktualisieren, ohne die UserForm zu schließen, indem du den RowSource
oder die List
-Eigenschaft anpasst.