Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Listbox RemoveItem

Listbox RemoveItem
25.09.2006 08:07:32
Frederic
Guten Morgen Excel-Profis,
hab folgenden Code, mit dem ich meine Listbox fülle und auch einträge wieder löschen möchte, haut aber irgendwie nicht hin.
Mit Listbox und UF experimentiere ich noch nicht so lange, von daher fehlt mir die Praxis:

Private Sub Commandbutton2_click()
With Sheets("Tabelle1")
R = .Cells(65536, 1).End(xlUp).Row
ListBox1.ColumnCount = .Cells(1, 256).End(xlToLeft).Column
ListBox1.ColumnHeads = True
ListBox1.RowSource = Sheets("Tabelle1").Range("A2:N" & R).Address(External:=True)
End With
End Sub


Private Sub CommandButton1_byDoubleClick()
i = ListBox1.ListIndex
ListBox1.RemoveItem (i)
End Sub

Könnt ihr mir vielleicht sagen, wo der fehler liegt?
Gruß.
Frederic
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox RemoveItem
25.09.2006 08:23:02
Frederic
Hi Leute,
hab meinen Code nochmal überarbeitet, passt soweit alles, nur bei "RemoveItem" kommt als fehlermeldung immer: "Nicht näher bezeichneter Fehler"....?
Wo liegt der Wurm denn?

Private Sub CommandButton1_Click()
With Sheets("Tabelle1")
R = .Cells(65536, 1).End(xlUp).Row
ListBox1.ColumnCount = .Cells(1, 256).End(xlToLeft).Column
ListBox1.ColumnHeads = True
ListBox1.RowSource = Sheets("Tabelle1").Range("A2:N" & R).Address(External:=True)
End With
End Sub


Private Sub CommandButton2_Click()
'Ensure ListBox contains list items
If ListBox1.ListCount >= 1 Then
'If no selection, choose last list item.
If ListBox1.ListIndex = -1 Then
ListBox1.ListIndex = _
ListBox1.ListCount - 1
End If
ListBox1.RemoveItem (ListBox1.ListIndex)
End If
End Sub


Private Sub UserForm_Initialize()
EntryCount = 0
CommandButton1.Caption = "Add Item"
CommandButton2.Caption = "Remove Item"
End Sub

Gruß
Frederic
Anzeige
AW: Listbox RemoveItem
25.09.2006 09:53:42
Beni
Hallo Frederic,
ListBox1.RowSource = Sheets("Tabelle1").Range("A2:N" & R).Address(External:=True)
ist eine Verknüpfung mit dem Bereich, das kann in der Listbox nicht gelöscht werden.
Du musst in der Tablle löschen, mit
Rows(ListBox1.ListIndex).Delete Shift:=xlUp
Gruss Beni
Anzeige
AW: Listbox RemoveItem
25.09.2006 09:59:28
Frederic
Hi Benni,
super - genial. Hab jetzt folgendes kombiniert, löscht jetzt in der ListBox UND in der tabelle:

Private Sub CommandButton1_Click()
Me.ListBox1.List() = Range("a2:d30").Value
End Sub


Private Sub CommandButton2_Click()
With ListBox1
.RemoveItem (.ListIndex)
Rows(ListBox1.ListIndex).Delete Shift:=xlUp
End With
End Sub


Private Sub UserForm_Initialize()
'EntryCount = 0
CommandButton1.Caption = "Add Item"
CommandButton2.Caption = "Remove Item"
End Sub

Perfekt - wie gesagt, einfach genial, tausend Dank.
Frederic
Anzeige
AW: Listbox RemoveItem
25.09.2006 10:30:35
Frederic
Hi Benni,
doch zu früh geschriehen....
Er löscht zwar aus der Listbox UND der Tabelle, aber ganz was anderes...es stimmt der Bezug dazu nicht...
Was läuft da noch verkehrt?
Danke nochmal für deine Hilfe.
Frederic
AW: Listbox RemoveItem
25.09.2006 11:26:19
Rudi
Hallo,
der Listindex fängt bei 0 an.
Gruß
Rudi
Anzeige
AW: Listbox RemoveItem
25.09.2006 11:30:24
Frederic
Hi Rudi,
wie muss ich dann folgenden Code verändern, dass er mir wirklich den markierten Eintrag aus Tabelle1 löscht? in der Listbox nimmt er ja den richtigen...

Private Sub CommandButton2_Click()
With ListBox1
.RemoveItem (.ListIndex + 1)
Rows(ListBox1.ListIndex + 1).Delete Shift:=xlDown
End With
End Sub

Danke.
Frederic
Anzeige
AW: Listbox RemoveItem
25.09.2006 20:09:46
Herbert
Hi,
Const i as Long = 1
Rows(ListBox1.ListIndex + i).Delete
Musst halt das richtige offset für i ausprobieren.
mfg Herbert
AW: Listbox RemoveItem
25.09.2006 10:07:36
Luschi
Hallo
man muß die Quelle in RowSource Ändern und nicht die zeilen in der Tabelle löschen.
So geht's:
Dim r As Long
Private Sub CommandButton1_Click()
With Sheets("Tabelle1")
r = .Cells(65536, 1).End(xlUp).Row
ListBox1.ColumnCount = .Cells(1, 256).End(xlToLeft).Column
ListBox1.ColumnHeads = True
ListBox1.RowSource = Sheets("Tabelle1").Range("A2:D" & r).Address(External:=True)
End With
End Sub
Private Sub CommandButton2_Click()
r = r - 1
Select Case ListBox1.ListCount
Case 1
Me.ListBox1.RowSource = ""
Case Is > 1
ListBox1.RowSource = Sheets("Tabelle1").Range("A2:D" & r).Address(External:=True)
End Select
End Sub
Private Sub UserForm_Initialize()
EntryCount = 0
CommandButton1.Caption = "Add Item"
CommandButton2.Caption = "Remove Item"
End Sub
Gruß von Luschi
aus klein-Paris
PS: bitte mach zum selben Problem nicht immer neue Anfragen auf; die Helfer
verfolgen auch die Problemstellungen, die weiter unten stehen.
Anzeige
AW: Listbox RemoveItem
25.09.2006 10:11:32
Frederic
Hi Luschi,
danke für die Hilfe, aber ich MUSS auch die Einträge in der Tabelle löschen, nur in der Listbox bringt es mir nichts....
PS: Sorry für das Doppelposting, ist eigentlich nicht meine Art...
Frederic
;
Anzeige
Anzeige

Infobox / Tutorial

Listbox Einträge in VBA entfernen


Schritt-für-Schritt-Anleitung

Um Einträge aus einer Listbox in Excel VBA zu entfernen, gehst Du wie folgt vor:

  1. Listbox füllen: Stelle sicher, dass Du die Listbox korrekt mit Daten füllst. Hier ist ein Beispielcode:

    Private Sub CommandButton1_Click()
       With Sheets("Tabelle1")
           R = .Cells(65536, 1).End(xlUp).Row
           ListBox1.ColumnCount = .Cells(1, 256).End(xlToLeft).Column
           ListBox1.ColumnHeads = True
           ListBox1.RowSource = Sheets("Tabelle1").Range("A2:N" & R).Address(External:=True)
       End With
    End Sub
  2. Eintrag entfernen: Verwende den folgenden Code, um den ausgewählten Eintrag zu entfernen:

    Private Sub CommandButton2_Click()
       If ListBox1.ListCount > 0 Then
           If ListBox1.ListIndex <> -1 Then
               ListBox1.RemoveItem (ListBox1.ListIndex)
               Rows(ListBox1.ListIndex + 2).Delete Shift:=xlUp ' +2 wegen Header
           End If
       End If
    End Sub

    Achte darauf, dass der Index der Listbox bei 0 beginnt, also den richtigen Offset beim Löschen aus der Tabelle berücksichtigst.


Häufige Fehler und Lösungen

  1. "Nicht näher bezeichneter Fehler": Dieser Fehler tritt auf, wenn Du versuchst, einen Eintrag zu entfernen, der nicht ausgewählt ist. Stelle sicher, dass Du einen Eintrag ausgewählt hast, bevor Du RemoveItem verwendest.

  2. Falscher Bezug beim Löschen: Wenn Du versuchst, den Eintrag in der Tabelle zu löschen, achte darauf, dass Du den korrekten Index verwendest. Der ListIndex beginnt bei 0, während die Zeilen in Excel bei 1 beginnen.

  3. ListBox RowSource: Wenn die RowSource auf einen Bereich referenziert, der sich ändert, kann das dazu führen, dass das Löschen nicht funktioniert. Stelle sicher, dass Du die Listbox nicht direkt mit einer Range verbindest, wenn Du Einträge löschen möchtest.


Alternative Methoden

  1. Direktes Löschen in der Tabelle: Anstatt die Listbox zu verwenden, kannst Du auch direkt die Zeilen in der Tabelle löschen. Beispiel:

    Rows(ListBox1.ListIndex + 2).Delete Shift:=xlUp ' +2 wegen Header
  2. Daten in Array speichern: Du kannst die Daten in ein Array laden, die Einträge dort bearbeiten und die Listbox danach neu füllen. Dies kann insbesondere bei großen Datenmengen performant sein.


Praktische Beispiele

Hier ist ein vollständiges Beispiel, das sowohl das Füllen als auch das Löschen von Einträgen in einer Listbox demonstriert:

Dim R As Long

Private Sub UserForm_Initialize()
    CommandButton1.Caption = "Add Item"
    CommandButton2.Caption = "Remove Item"
End Sub

Private Sub CommandButton1_Click()
    With Sheets("Tabelle1")
        R = .Cells(65536, 1).End(xlUp).Row
        ListBox1.RowSource = .Range("A2:D" & R).Address(External:=True)
    End With
End Sub

Private Sub CommandButton2_Click()
    If ListBox1.ListIndex <> -1 Then
        ListBox1.RemoveItem (ListBox1.ListIndex)
        Rows(ListBox1.ListIndex + 2).Delete Shift:=xlUp ' +2 wegen Header
    End If
End Sub

Tipps für Profis

  • Verwendung von ListBox.RemoveItem: Wenn Du viele Einträge hast, versuche die Listbox zu leeren, bevor Du neue Daten lädst, um Performance-Probleme zu vermeiden.
  • Datenvalidierung: Überprüfe, ob die Listbox leer ist, bevor Du RemoveItem aufrufst, um Laufzeitfehler zu vermeiden.
  • Dokumentation: Dokumentiere Deinen Code gründlich, insbesondere bei komplexen Operationen, um spätere Fehler zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Einträge gleichzeitig aus der Listbox entfernen?
Das Entfernen mehrerer Einträge erfordert eine Schleife. Du musst die Indizes in umgekehrter Reihenfolge durchlaufen, um sicherzustellen, dass das Löschen nicht die Indizes der verbleibenden Einträge verschiebt.

2. Kann ich Einträge nach Wert entfernen?
Ja, Du kannst eine Schleife verwenden, um durch die Listbox-Elemente zu iterieren und mit einem Vergleichsoperator die gewünschten Einträge zu finden und zu entfernen.

3. Was ist der Unterschied zwischen RemoveItem und Clear für eine Listbox?
RemoveItem löscht einen spezifischen Eintrag, während Clear alle Einträge aus der Listbox entfernt.

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