Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Ganze Zeilen löschen
#1
Hi, ich stehe leider irgendwo auf dem Schlauch. Komme beim besten Willen nicht darauf warum ich nicht alle Zeilen bis zur ersten leeren Zeile gelöscht bekomme, deren Inhalt in Spalte 2 dem der ComboBox2 entspricht ( auch mit ComboBox2.Text getestet). Bei beiden Varianten wird nur die erste Zeile gelöscht in der in Spalte 2 der Text/Value dem der ComboBox2 entspricht. Jemand ne Idee?

Code:
Private Sub label2_click()
lindex = 2
    Do While Sheets(1).Cells(lindex, 2).Value <> ""
         If Sheets(1).Cells(lindex, 2).Value = UserForm1.ComboBox2.Value Then
              Sheets(1).Rows(lindex).EntireRow.Delete
         End If
    lindex = lindex + 1
    Loop
End Sub
Antworten Top
#2
Code:
Private Sub label2_click()
  with Sheets(1).Columns(2)
     .replace ComboBox2 ,""
     .specialcells(4).entirerow.delete
  end with
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#3
Hallo Fupi,

teste es mal rückwärts, also von unten nach oben:
Private Sub label2_click()
Dim lIndex As Long
lIndex = Sheets(1).Cells(Rows.Count, 2).End(xlUp).Row
Do While lIndex > 0
If Sheets(1).Cells(lIndex, 2).Value = UserForm1.ComboBox2.Value Then
Sheets(1).Rows(lIndex).EntireRow.Delete
End If
lIndex = lIndex - 1
Loop
End Sub
Gruß Uwe
Antworten Top
#4
Danke, passt! :) Wobei ich leider nach wie vor nicht verstehe wo bei mir der Fehler lag?
Antworten Top
#5
Hallo Fupi,

(19.06.2017, 06:17)Fupi schrieb: Wobei ich leider nach wie vor nicht verstehe wo bei mir der Fehler lag?

es ginge auch vorwärts, wenn man Deinen Code etwas modifiziert:
Private Sub label2_click()
 Dim lIndex As LongPtr
   lIndex = 2
   Do While Sheets(1).Cells(lIndex, 2).Value <> ""
        If Sheets(1).Cells(lIndex, 2).Value = UserForm1.ComboBox2.Value Then
             Sheets(1).Rows(lIndex).EntireRow.Delete
        Else
             lIndex = lIndex + 1
        End If
   Loop
End Sub
Vielleicht erkennst Du es so besser, woran es lag. Wink

Gruß Uwe
Antworten Top
#6
Ja, jetzt hat es geschaltet, danke nochmal.
Antworten Top
#7
Warum nicht einfach ?
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#8
Ja, hatte ich mich auch gefragt, snb.
Dein Code ist kompakt und um Welten schneller als die Schleife.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste