Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1432to1436
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

mehrere selektierte Listboxelemente löschen

mehrere selektierte Listboxelemente löschen
26.06.2015 15:27:49
peter
Hallo zusammen,
ich habe bisher einen Code mit dem ich mithilfe einer listbox einzelne selektierte Spalten aus _ einer Tabelle löschen kann. Jetzt frage ich mich ob ich den Code so umbauen kann , dass mehrere selektierte Einträge aufeinmal aus der Tabelle gelöscht werden können. Mein Code sieht bisher so aus:

Private Sub CommandButton2_Click()
'Löschen Schaltfläche Ereignisroutine
Dim lZeile As Long
'Wenn kein Datensatz in der ListBox markiert wurde, wird die Routine beendet
If ListBox1.ListIndex = -1 Then Exit Sub
'Zum Löschen benötigen wir die Zeilennummer des ausgewählten Datensatzes
lZeile = 5 'Start in Zeile 5
'Schleife solange etwas in der ersten Spalte in Tabelle "Historie" drin steht
Do While Worksheets("Historie").Cells(lZeile, 1).Text  ""
'Datensatz ID Spalte mit selektiertem Eintrag der ListBox vergleichen
If ListBox1.Text = Worksheets("Historie").Cells(lZeile, 1).Value2 Then
'Eintrag gefunden, die ganze Zeile wird nun gelöscht
Worksheets("Historie").Rows(CStr(lZeile & ":" & lZeile)).Delete
'Die ListBox muss nun neu geladen werden!
Call UserForm_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
Exit Do 'Vorzeitiges Ende, da der Datensatz schon gefunden ist
End If
lZeile = lZeile + 1 'Nächste Zeile bearbeiten
Loop
End Sub

Viele Grüße,
Peter

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mehrere selektierte Listboxelemente löschen
26.06.2015 23:35:49
Sepp
Hallo Peter,
ungetestet!
Private Sub CommandButton2_Click()
  Dim rng As Range, rngDel As Range, strFirst As String
  
  If ListBox1.ListIndex > -1 Then
    With Worksheets("Historie")
      Set rng = .Range("A5:A" & .Rows.Count).Find(What:=ListBox1.Text, LookAt:=xlWhole, _
        LookIn:=xlValues, MatchCase:=False, SearchFormat:=False)
      
      If Not rng Is Nothing Then
        strFirst = rng.Address
        Do
          If rngDel Is Nothing Then
            Set rngDel = rng
          Else
            Set rngDel = Union(rngDel, rng)
          End If
          Set rng = .Range("A5:A" & .Rows.Count).FindNext(rng)
        Loop While Not rng Is Nothing And strFirst <> rng.Address
      End If
      
      If Not rngDel Is Nothing Then
        rngDel.EntireRow.Delete
        Call UserForm_Initialize
      End If
    End With
  End If
  
  Set rng = Nothing
  Set rngDel = Nothing
End Sub


Gruß Sepp

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige