2017-09-15 1 views
0

Ich habe diese If-Anweisung, die besagt, Wenn diese Zelle rehire sagt, und die Füllung ist diese Farbe, UND diese andere Zelle sagt Einstellungsdatum, dann die Zeile zu löschen. Gerade jetzt löscht es die Zeile, wenn es heißt, wieder in der einen und Einstellungsdatum in der anderen, egal die Farbe der Zelle. Es wird nicht die Farbeingabe berücksichtigt. Kann mir jemand sagen, wo ich falsch gelaufen bin?Wenn Anweisung die Farbe nicht berücksichtigt

Dim lngRow As Long 
Dim lngRows As Long 
'Find the last row in Column A 
lngRows = Range("A" & Rows.Count).End(xlUp).Row 

For lngRow = lngRows To 2 Step -1 
    If LCase(ActiveWorkbook.Worksheets("Sheet1").Cells(lngRow, "A").Value) = "rehire" _ 
     And ((ActiveWorkbook.Worksheets("Sheet1").Cells(lngRow, "E").FormatConditions(1).Interior.Color) = RGB(255, 199, 206) _ 
     And LCase(ActiveWorkbook.Worksheets("Sheet1").Cells(lngRow, "I").Value) = "hire date") Then 
     ActiveWorkbook.Worksheets("Sheet1").Rows(lngRow).EntireRow.Delete _ 

    End If 
Next 

Eigentlich jetzt, dass ich es sehe, wenn ich gehe Zellen zu formatieren und füllen zu gehen, kundenspezifische Farbe, es ist alles 0 und es sagt, dass es keine Füllung ist. Die Füllfarbe wurde durch bedingte Formatierung erstellt. Ich benutzte die andere Nummer, die 13551615 war, die ich von der bedingten Formatierung bekam, aber das funktionierte auch nicht. Der Code löscht Zeilen, wenn es keine Füllung gibt, die es nicht sein sollte, weil es nicht alle 3 Anforderungen erfüllt. Habe ich falsch gedacht?

+2

"Die Füllfarbe wurde durch bedingte Formatierung erstellt" - vielleicht könnten Sie diese Formel auch verwenden, um festzustellen, ob die Zelle farbig ist, anstatt sich auf die Füllung zu verlassen? – BruceWayne

+0

@BruceWayne Ich bin mir nicht sicher, wie ich das machen würde. Die bedingte Formatierung erfolgt durch Auswählen einer Spalte und anschließendes Verwenden eines "With Selection.FormatConditions (1) .Interior". Ich bin mir nicht sicher, wo ich das mit Aussage setzen würde, denke ich. Um die If-Anweisung oder etwas? – Robillard

+0

@BruceWayne Ich fand tatsächlich eine Antwort, die nach einer Weile der Suche funktionierte. Überprüfen Sie meine Antwort, wenn Sie sehen wollen, wie es geht:) Danke Batman! – Robillard

Antwort

0

Ich fand es heraus. Die Bedingung "FormatConditions" funktioniert bei dieser bedingten Formatierung nicht. Sie müssen DisplayFormat.Interior.Color verwenden, damit es funktioniert. Also habe ich zuerst diesen Code verwendet, um herauszufinden, welche Farbe er tatsächlich war. Ich bin sicher, dass Sie es bearbeiten können, damit es nur die einzelne Zelle anzeigt, die ich gerade verwendet habe, weil es nicht wichtig war, und ich wollte die Farben überprüfen.

Sub GetTheColors() 
For i = 1 to 100 
For j = 1 to 10 
     Cells(i,j+10) = Cells(i,j).FormatConditions.Interior.ColorIndex 
Next j 
Next i 
End Sub 

Dann, wenn ich meine Farbe hatte, die für die hellrot aus dem bedingten Formatierung Mine 38 war füllen, änderte ich dann meinen Code so aussehen, und es dann ALL 3 Bedingungen, die für sie sein, um wahr zu lösche die Zeile.

Dim lngRow As Long 
Dim lngRows As Long 
'Find the last row in Column A 
lngRows = Range("A" & Rows.Count).End(xlUp).Row 

For lngRow = lngRows To 2 Step -1 
    If LCase(ActiveWorkbook.Worksheets("Sheet1").Cells(lngRow, "A").Value) = "rehire" _ 
     And ((ActiveWorkbook.Worksheets("Sheet1").Cells(lngRow, "E").DisplayFormat.Interior.ColorIndex) = 38 _ 
     And LCase(ActiveWorkbook.Worksheets("Sheet1").Cells(lngRow, "I").Value) = "hire date") Then 
     ActiveWorkbook.Worksheets("Sheet1").Rows(lngRow).EntireRow.Delete _ 

    End If 
Next 

Also im Grunde änderte ich nur die FormatConditions und die Zahl ist, zu DisplayFormat.Interior.Color mit meiner neuen Farbe fand ich. Dies funktionierte mit bedingter Formatierung.

Verwandte Themen