2016-12-22 1 views
0

ich einig VBA-Code, der die gesamte Zeile, wenn eine Zelle in einer Spalte roten Text hat löschtVBA Zeile löscht basierend auf 2 Spalten

Dim Cell As Range 

For Each Cell In Intersect(Columns("L"), ActiveSheet.UsedRange) 
    If Cell.DisplayFormat.Font.ColorIndex = 3 Then Cell.Value = "#N/A" 
Next 
On Error GoTo NoRedText 
Columns("L").SpecialCells(xlConstants, xlErrors).EntireRow.Delete 

NoRedText: 

Ich mag würde diesen Code erweitern, umfasst auch eine andere Spalte, enthält einen "Y" -Wert in der Zelle.

Spalt L enthält die rote Textzeichenfolge

Spalt P die "Y" Textzeichenfolge

Daher enthält, wenn der Text in Spalte L rot ist und der Text ist gleich "Y" in der Spalte P es sollte die gesamte Zeile löschen

Was muss ich dem Code hinzufügen, um dies zu erreichen?

Danke

+1

Vielleicht so etwas wie 'Wenn Cell.DisplayFormat.Font.ColorIndex = 3 AND Cell.Offset (, 4) = "Y" Then .... ' –

+0

Wow, du hast das leicht gemacht. Es funktioniert perfekt. Vielen Dank – BradleyS

+0

Ich füge es als Antwort und nicht als Kommentar hinzu. –

Antwort

0

Ihre Cell Variablenreferenzen ein Bereich und alle Eigenschaften, die mit ihm zu gehen.

Die Offset Eigenschaft

Liefert ein Range-Objekt, das einen Bereich darstellt, der von dem angegebenen Bereich versetzt wird. (https://msdn.microsoft.com/en-us/library/office/ff840060.aspx)

dieses Wissen verwenden Sie den Code in dem Bereich schauen sagen können, die von vier Säulen versetzt ist:

If Cell.DisplayFormat.Font.ColorIndex = 3 AND Cell.Offset(,4)="Y" Then Cell.Value = "#N/A" 
Verwandte Themen