如果声明不考虑颜色

时间:2017-09-15 16:07:47

标签: excel vba excel-vba conditional-formatting

我有这个If语句,如果这个单元格表示重新填充,并且填充是这种颜色,并且这个其他单元格表示雇用日期,则删除该行。现在它正在删除该行,如果它在一个中表示重新雇用并且在另一个中雇用日期而不管单元格的颜色。它没有考虑颜色介绍。有人能告诉我哪里出错了吗?

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

实际上,现在我看一下,如果我去格式化单元格并去填充,自定义颜色,它全部为0,它表示没有填充。填充颜​​色通过条件格式完成。我使用的另一个数字是13551615,我是从条件格式中获得的,但那也没有用。如果没有填充,则代码正在删除行,因为它不符合所有3个要求。我这么想错了吗?

1 个答案:

答案 0 :(得分:0)

我明白了。条件“FormatConditions”不适用于此条件格式。您需要使用DisplayFormat.Interior.Color才能工作。首先,我使用此代码来查找它实际上是什么颜色。我相信你可以编辑它,使它只显示我刚用过的单个单元格,因为它没关系,我想检查颜色。

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

然后,一旦我得到了我的颜色,对于来自条件格式的浅红色填充我的颜色为38,然后我将我的代码改为看起来像这样,然后它需要所有3个条件才能删除该行。

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

所以我基本上只是将FormatConditions和那个数字更改为我发现的新颜色的DisplayFormat.Interior.Color。这适用于条件格式。