2017-02-14 3 views
0

Ich verwende eine Schleife, um Zellen mit einem "0" -Eintrag in Spalte B zu finden und lösche dann die gesamten entsprechenden Zeilen.VBA Löschen von Zeilen in Excel - Schleife nur für bestimmte Arbeitsblätter

Leider kann ich es nicht schreiben, so dass es nur für ein bestimmtes Arbeitsblatt funktioniert. Hier ist, was ich habe, so weit:

Dim myloop 

For myloop = Range("B10000").End(xlUp).Row To 1 Step -1 
    If Cells(myloop, 4).Value = 0 Then Rows(myloop).EntireRow.Delete 

Next myloop 

Ich mag diese Schleife speziell nur für Arbeitsblatt 2, aber nicht meinen gesamten Code auszuführen nur in Arbeitsblatt 2 als diese Schleife laufen ist nur ein Teil eines größeren Code.

Jede Hilfe wird geschätzt und danke im Voraus.

+0

können Sie den gesamten Code veröffentlichen. –

Antwort

1

Sie müssen Ihre Range mit einem Zertifikat Worksheet vollständig qualifizieren.

Hinweis: Sie könnten auch die AutoFilter verwenden, arbeitet schneller für große Datenmengen.

With Worksheets("Sheet1") ' <-- modify "Sheet1" to your sheet's name 
    For myloop = .Range("B10000").End(xlUp).Row To 1 Step -1 
     If .Cells(myloop, 4).Value = 0 Then .Rows(myloop).EntireRow.Delete 
    Next myloop 
End With 

Alternative: die letzte Zeile mit Daten in Spalte B zu erhalten (wenn die Daten mehr als 10.000 Zeilen sein)

With Worksheets("Sheet1") ' <-- modify "Sheet1" to your sheet's name 
    For myloop = .Range("B" & .Cells(.Rows.Count, "B")).End(xlUp).Row To 1 Step -1 
     If .Cells(myloop, 4).Value = 0 Then .Rows(myloop).EntireRow.Delete 
    Next myloop 
End With 
+0

Versuchte es und sieht aus, als ob es gut funktioniert. Vielen Dank. –

0

, wenn der Block von Code innerhalb eines größeren Schleife Looping ist durch Arbeitsblätter, Fügen Sie eine if-Bedingung hinzu (activesheet.index = 2) oder überprüfen Sie einfach, ob das activesheet Blatt2 ist oder ob es nur eine separate Schleife ist und geben Sie dann das Blatt im Code

Verwandte Themen