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 然后重复上面的公式也可以,但是觉得这样肯定是不对的~~,请问怎么操作~~
展开
 我来答
阳光上的桥
2016-10-23 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65815
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部

如果只有两三个,就用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

不过这样仅仅是为了程序代码简洁,对效率没有多大的好处

平阳虎01
高粉答主

2016-10-23 · 每个回答都超有意思的
知道大有可为答主
回答量:3.7万
采纳率:75%
帮助的人:5006万
展开全部
试试将-B、-C、-F等放在数组中。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式