Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ListBox.clear bringt nicht näher benannten Fehler

Forumthread: ListBox.clear bringt nicht näher benannten Fehler

ListBox.clear bringt nicht näher benannten Fehler
24.08.2017 14:40:37
Anja
Hallo Zusammen,
ich habe mehrere Userformen über die Kundendaten eingelesen und geändert werden können. Die Userform3 hat 2 Listboxen in der die Geräte/Produkte des Kunden aufgeführt sind. Nach Aufruf einer weiteren UserForm4 können diese geändert werden - funktioniert soweit. Nachdem ändern würde ich die Listbox gerne aktualisieren.
Die Daten werden wie folgt eingelesen:
'Geräte in Listbox2 aufführen
If Not Sheets(KundenID).Cells(11, 2).Value = "0" Then
L = 12 + Geraetezaehler
.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 If
'Sonden in Listbox3 aufführen
.ListBox3.ColumnCount = 4
.ListBox3.ColumnWidths = "80 Pt;50 Pt; 10Pt;80 Pt"
'.ListBox3.RowSource = Sheets(KundenID).Name & "!" & Range("B21:G27").Address
.ListBox3.List = Sheets(KundenID).Range("A21:D27").Value
Die Listbox der Sonden lässt sich (beim schließen der entsprechenden Userform) über folgenden Code problemlos aktualisieren:
With UserForm3
.ListBox3.Clear
.ListBox3.List = Sheets(b_KundenID).Range("A21:E27").Value
End With
Die Listbox der Geräte lässt sich auf diese Weise aber nicht leeren.
Bei UserForm3.ListBox2.Clear erhalte ich immer einen nicht näher bezeichneten Fehler.
Ich vermute mal, das liegt am unterschiedlichen einlesen. Kann mir jemand sagen wie ich die Listbox aktualisieren kann ohne UserForm3 zu schließen?
Danke und viele Grüße
Anja
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW:ListBox.clear bringt nicht näher benannten Fehl
24.08.2017 16:27:35
Matthias
Moin! Bei der Listbox2 hast du als Quelle RowSource. Damit ist sie fest damit verbunden / gebunden. Um das zu leeren, den RowSouce-Wert löschen. Sollte dann so aussehen.
UserForm3.ListBox2.RowSource = ""
Damit sollte die Liste dann auch leer sein und kann neu eingelesen werden. Dazu dann entweder bei RowSource wieder einen Bereich hinterlegen oder mit Additem einlesen. VG
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

ListBox.clear in Excel VBA – So behebst du den Fehler


Schritt-für-Schritt-Anleitung

  1. 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.

  2. 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
  3. ListBox leeren: Um die ListBox2 zu leeren, kannst du den RowSource-Wert auf einen leeren String setzen:

    UserForm3.ListBox2.RowSource = ""
  4. 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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige