mehrere selektierte Listboxelemente löschen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: mehrere selektierte Listboxelemente löschen
von: peter
Geschrieben am: 26.06.2015 15:27:49

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

Bild

Betrifft: AW: mehrere selektierte Listboxelemente löschen
von: Sepp
Geschrieben am: 26.06.2015 23:35:49
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


 Bild

Beiträge aus den Excel-Beispielen zum Thema "mehrere selektierte Listboxelemente löschen"