三重if语句中的VBAmacrosINSTR函数

我尝试使用“instring”函数为计数器制作三重filter。 主要想法是定义一个范围,然后检查每个单元格如下:

1)在单元格中find内容“0111”

2)如果find的单元格中的内容为“0111”,则检查该单元格左边的列,如果内容“127”存在

3)检查当前单元格的行是不是红色(颜色3)

4)如果以上所有情况都是真的,请提出反诉。

我的代码如下所示:

Set SrchRng4 = Range("J1:J100") For Each cel In SrchRng4 If InStr(1, cel.Value, "0111", 1) > 0 Then If InStr(1, ActiveCell(Offset(-1,0), "127", 1) > 0 And cel.EntireRow.Interior.ColorIndex <> 3 Then count_K = count_K + 1 End If Next cel 

它用于search“111”和红色行的除外,但是在添加“127”filter之后它不起作用。 任何人都可以提供一些input? 我想这与语法有些问题?

亲切的问候,马库斯

 For Each cel In Range("J1:J100") If InStr(cel, "0111") And InStr(cel( ,0), "127") _ And cel.EntireRow.Interior.Color <> vbRed Then count_K = count_K + 1 Next 
  • 不为0的数字值被评估为True ,所以> 0是可选的
  • cel(,0)类似于cel.Offset(0,-1)来获取cel左边的单元格
  • vbRedrgbRed是红色常量,但.ColorIndex <> 3也是很好的
  • 每个If .. Then语句应该有一个匹配的End If语句,除非它在一行上