【发布时间】:2019-07-13 11:23:25
【问题描述】:
我正在尝试获取代码以检查多个条件是否为真,如果是,则更改单元格的颜色,但这不起作用并且突出显示了不必要的方法。我不确定为什么代码不能按预期工作:
Sub ConditionCheck()
Dim wb As Workbook
Dim ws As Worksheet
Dim lastrow As Long
Dim rng1 As Range
Dim rng2 As Range
Dim c As Range
Dim d As Range
Set wb = ActiveWorkbook
Set ws = wb.Sheets("Source")
lastrow = Sheets("Source").Cells(Rows.Count, "A").End(xlUp).Row
i = 2
For i = 2 To lastrow
If Cells(i, 8) = "Cancelled Not Applicable" Or Cells(i, 8) = "Completed" Or Cells(i, 8) <> "" Then
If Cells(i, 23) <> "Cancelled" Or Cells(i, 23) <> "Completed" Then
Cells(i, 23).Interior.ColorIndex = 4
End If
End If
Next i
End Sub
样本数据:
CASE ID CASE STATUS PROGRAM STATUS
10001 Active Pending
10002 Completed Pending Review
10004 Cancelled Not Applicable Cancelled
【问题讨论】:
-
你能发布一些测试数据吗?我有一种感觉你需要做一个
and而不是or你能张贴你的工作簿的图片,也许吗?这可能与数据有关,但很难说。 -
Or Cells(i, 8) <> ""将输入任何非空单元格的第一个条件。 -
那么代码“打算如何工作”?这里显然有一个业务规则,但在不知道的情况下,很难解开这个条件。
-
更不用说,如果你有
Cells(i, 8) <> "",这使得"Cancelled Not Applicable" Or "Completed"的前两个条件完全不相关,因为它的意思是“如果一个单元格不是空白的,那就做点什么” -
我有一种永恒的预感,解释逻辑运算符和真值表的工作原理比为您提供正确实现您的要求的代码更有益。
标签: excel vba if-statement conditional-statements