三重if语句中的VBA宏INSTR函数

时间:2016-10-24 11:00:35

标签: excel vba excel-vba macros

我尝试使用" instring"用于为计数器制作三重滤波器的功能。 主要思想是定义一个范围,然后按如下方式检查每个单元格:

1)找到内容" 0111"在单元格中

2)如果内容" 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

它适用于搜索&#34; 111&#34;并且红色行的例外但是在添加&#34; 127&#34;之后它不起作用。过滤。 任何人都可以提供一些意见吗?我想它的语法有些问题吗?

亲切的问候, 马库斯

1 个答案:

答案 0 :(得分:1)

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语句,除非它在一行上