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

Listbox-Eintrag löschen

Forumthread: Listbox-Eintrag löschen

Listbox-Eintrag löschen
31.08.2002 11:20:40
Jens
Hallo Excelprofis
ich will per Makro einzelne Datensätze aus einer ListBox löschen aber vorher sicherstellen das auch ein Eintrag markiert(ausgewählt) ist, weil sonst immer der erste Datensatz gelöscht wird und ich dieses unterbinden möchte. Wie schreibe ich einen Code der bei keiner Auswahl eine MSGBox öffnet und zur Eingabe auffordert.

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Listbox-Eintrag löschen
31.08.2002 11:23:01
Hajo_Zi
Hallo Jens

295. Listbox Eintrag löschen
i=Listbox.Listindex
Listbox.RemoveItem (i)
Von Ramses Rainer


und vorher nur ein Vergleich ob Verschieden von leer

If Listbox1.Value<>""

Gruß Hajo

Re: Listbox-Eintrag löschen
31.08.2002 18:01:34
Jens
Hallo Hajo, Danke für deine Hilfe. Ich habe sicher meine Frage etwas unkorrekt gestellt. Ich wollte in meinem nachfolgendem Code eine Prozedur einfügen die nur löscht wenn auch ein Datensatz in der Listbox markiert ist. Kannst du mir dabei noch weiterhelfen?


Private Sub DatensatzLöschen_Click()
If MsgBox("Soll der ausgewählte datensatz wirklich gelöscht werden ?", 36, "") = vbNo Then Exit Sub
Dim intRow As Integer
If MultiPage1.Value = 0 Then
intRow = ListBox1.ListIndex + 2
Sheets("Angebotsspeicher").Rows(intRow).Delete Shift:=xlUp
Else:
intRow = ListBox2.ListIndex + 2
Sheets("Rechnungsspeicher").Rows(intRow).Delete Shift:=xlUp
End If
End Sub

Danke im voraus Jens

Anzeige
Re: Listbox-Eintrag löschen
31.08.2002 18:14:25
Hajo_Zi
Hallo Jens

die Frage kann nur so gut beantwortet werden wie die Frage gestellt ist. Im ersten Beitrag wolltest Du einen Listboxeintrag löschen. (in einer Listbox) In Deinem jetzigen Code soll nach der ausgewählten Multipage in zwei unterschiedlichen Tabellen Zeilen gelöscht werden.

Also das ist mir nicht ganz klar, wo das Problem ist.

Gruß Hajo

Anzeige
Re: Listbox-Eintrag löschen
31.08.2002 19:08:44
Jens
Hallo Hajo
mein problem liegt, das nur der ausgewählte bzw markierte Datensatz gelöscht werden soll. Wenn in der ListBox ein Eintrag nur in einem Rahmen markiert ist wird er gelöscht obwohl er nicht angewählt wurde und somit nicht Blau hinterlgt ist.

Gruß Jens

Anzeige

Infobox / Tutorial

Listbox-Einträge in Excel löschen


Schritt-für-Schritt-Anleitung

Um einen Eintrag aus einer ListBox in Excel zu löschen, kannst Du ein Makro verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Gehe zu "Einfügen" > "Modul".

  3. Kopiere den folgenden Code in das Modul:

    Private Sub DatensatzLöschen_Click()
       If ListBox1.ListIndex = -1 Then
           MsgBox "Bitte wähle einen Eintrag aus der ListBox aus.", vbExclamation
           Exit Sub
       End If
    
       Dim i As Integer
       i = ListBox1.ListIndex
    
       If MsgBox("Soll der ausgewählte Datensatz wirklich gelöscht werden?", vbYesNo + vbQuestion, "Bestätigung") = vbNo Then Exit Sub
    
       ListBox1.RemoveItem (i)
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Füge einen Button hinzu, der das Makro DatensatzLöschen_Click ausführt.

Mit diesem Code wird überprüft, ob ein Eintrag in der ListBox ausgewählt ist, bevor dieser gelöscht wird.


Häufige Fehler und Lösungen

  • Problem: Der erste Eintrag wird gelöscht, auch wenn kein Eintrag ausgewählt ist.

    • Lösung: Stelle sicher, dass die ListIndex-Eigenschaft der ListBox überprüft wird, bevor der RemoveItem-Befehl ausgeführt wird.
  • Problem: Die MsgBox wird nicht angezeigt.

    • Lösung: Überprüfe, ob der Code im richtigen Kontext (z.B. Button-Click) aufgerufen wird.

Alternative Methoden

Wenn Du eine ListBox hast, die mehrere Auswahlen erlaubt, kannst Du auch alle ausgewählten Einträge löschen. Hier ist ein Beispielcode:

Private Sub AlleDatensaetzeLoeschen_Click()
    Dim i As Long
    For i = ListBox1.ListCount - 1 To 0 Step -1
        If ListBox1.Selected(i) Then
            ListBox1.RemoveItem (i)
        End If
    Next i
End Sub

Diese Methode entfernt alle markierten Einträge aus der ListBox.


Praktische Beispiele

Hier ist ein praktisches Beispiel, wie Du eine ListBox mit einigen Werten füllen und dann Einträge löschen kannst:

  1. Füge einige Einträge zur ListBox hinzu:

    Private Sub UserForm_Initialize()
       ListBox1.AddItem "Eintrag 1"
       ListBox1.AddItem "Eintrag 2"
       ListBox1.AddItem "Eintrag 3"
    End Sub
  2. Verwende die oben beschriebenen Methoden, um Einträge zu löschen.


Tipps für Profis

  • Verwende With-Anweisungen: Du kannst deinen Code effizienter gestalten, indem Du With-Blöcke verwendest.

    With ListBox1
       If .ListIndex = -1 Then
           MsgBox "Kein Eintrag ausgewählt."
           Exit Sub
       End If
       .RemoveItem .ListIndex
    End With
  • Fehlerbehandlung: Implementiere Fehlerbehandlung mit On Error, um unerwartete Fehler elegant abzufangen.


FAQ: Häufige Fragen

1. Frage Wie stelle ich sicher, dass ein Eintrag in einer ListBox nicht gelöscht wird, wenn er nicht ausgewählt ist?

Antwort: Verwende die ListIndex-Eigenschaft, um zu überprüfen, ob ein Eintrag ausgewählt ist, bevor Du den RemoveItem-Befehl ausführst.

2. Frage Kann ich mehrere Einträge auf einmal löschen?

Antwort: Ja, Du kannst alle markierten Einträge mit einer Schleife löschen, indem Du die Selected-Eigenschaft der ListBox verwendest.

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