excel vba 怎么让这条代码,多加几个“包含”某某文字的,的条件
IfInstr(Range("a"&i),"-F")>0androws(i).hidden=false比如说,不光要让-F显示出来,我还要让-B-C之类的一起被选出来赋值...
If Instr(Range("a" & i) ,"-F")>0 and rows(i).hidden=false
比如说,不光要让-F 显示出来,我还要让 -B -C 之类的一起被选出来赋值,该怎么加,虽然在第一个公式后面加个 or 然后重复上面的公式也可以,但是觉得这样肯定是不对的~~,请问怎么操作~~ 展开
比如说,不光要让-F 显示出来,我还要让 -B -C 之类的一起被选出来赋值,该怎么加,虽然在第一个公式后面加个 or 然后重复上面的公式也可以,但是觉得这样肯定是不对的~~,请问怎么操作~~ 展开
2个回答
展开全部
如果只有两三个,就用OR了,你写出来发现不对,那是优先级的问题,给OR加括号,例如:
If (Instr(Range("a" & i) ,"-F")>0 OR Instr(Range("a" & i) ,"-B")>0 OR Instr(Range("a" & i) ,"-C")>0) and rows(i).hidden=false
事实上VBA不支持布尔短路运算,这样写更好,可以减少比较的次数:
If rows(i).hidden=false then
If (Instr(Range("a" & i) ,"-F")>0 OR Instr(Range("a" & i) ,"-B")>0 OR Instr(Range("a" & i) ,"-C")>0) Then
end if
如果需要判断许多,可以使用for each循环,例如:
ok=0
v=Range("a" & i)
for each t in Array("-F","-B","-C")
if instr(v,t)>0 then
ok=1
exit for
end if
next t
if ok=1 and rows(i).hidden=false
不过这样仅仅是为了程序代码简洁,对效率没有多大的好处
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询