Ich versuche, jede Zeile zu löschen, in der der Zellenwert für Spalte x nicht mit dem Zellenwert von Spalte y übereinstimmt. Ich bekomme immer einen Objektfehler und bin mir ziemlich sicher, dass ich etwas Offensichtliches vermisse.VBA So löschen Sie Zeilen, wenn der Wert von Spalte X nicht mit dem Wert von Spalte Y übereinstimmt
Sub Gooddata()
Application.ScreenUpdating = False
lr = Range("C65536").End(xlUp).Row
For a = lr To 1 Step -1
If Cells(a, 8).Value <> Cells(a, 9).Value Then
Cells(a, 3).Select
ActiveCell.EntireRow.Delete = True
End If
Next a
Application.ScreenUpdating = True
End Sub
Edit: Ich habe den Code vorgenommenen Änderungen auf der Grundlage der Vorschläge der Kommentare hier ist das Eingangsbild der Code und das Ausgangsbild.
Sub Gooddata()
Application.ScreenUpdating = False
lr = Range("C65536").End(xlUp).Row
For a = lr To 1 Step -1
If Cells(a, 8).Value <> Cells(a, 9).Value Then
Cells(a, 3).EntireRow.Delete
End If
Next a
Application.ScreenUpdating = True
End Sub
Wenn der Code in der Art und Weise ausgeführt, dass ich es zu Old Argus Gebäuden will 12 wird jedoch nicht gelöscht werden, die Zeile darunter wird es wegen des Kommas und Strichs.
Es funktioniert, ich bin ein Idiot. Danke ... – Brayheart
Auch ich empfehle nicht ['.Select'] (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros) .So , kuscheln Sie einfach Ihre Zeile mit der Endung '.Select' mit dem Teil nach der' Activecell' der nächsten Zeile. Also, 'Cells (a, 3) .EntireRow.Delete = True' ... was @Findwindow vorgeschlagen hat. Das ist wahrscheinlich der Grund, warum Sie den Fehler bekommen haben (nur wenn Sie sich gefragt haben). – BruceWayne
Also falscher Alarm. Es funktioniert nicht wie vorgesehen. Als ich @findwindow's probierte löschte das Makro viel mehr als beabsichtigt Was mache ich falsch? Wenn ich den Code mit ** Zellen (a, 3) .EntireRow.Delete ** löschte das Makro alle Zellen neben 3, wo die 3, die links waren die Zellen nicht übereinstimmen .. I versuche Zeilen zu löschen, in denen Zelle A und Zelle B nicht übereinstimmen. Es scheint das Gegenteil zu tun. ** <> ** ist der ungleiche Operator in VBA nicht wahr? – Brayheart