fastreport2.5 三条件判断语句_萌新关于Excel VBA中IF条件判断语句的一点心得体会...

本文作者分享了在学习VBA编程过程中,尤其是新手阶段遇到的IF判断使用误区,讨论了IF的不同写法及其在程序中的控制作用。重点讲解了IF/ENDIF连接型和IF包IF的两种结构,并给出实例说明判断语句位置的重要性。作者强调了注释和理解模型在编程中的关键作用,推荐了郑广学老师的教程作为学习资源。
摘要由CSDN通过智能技术生成

作者:金人瑞 《Excel VBA175例无理论纯实战教程》学员

0760cb762ae964bd8a24bf376701291c.png

最近正在学习郑广学老师的VBA 175例教程,这是一篇新手向的文章,也是一个新手的总结,高手可以批评文章中的不足之处,也可以无视,VBA中的IF判断, 判断一般起到控制作用,如郑老师所说,就像一个水管中的控制阀,水来了,一个个的控制阀决定着流水的走向。而整个流程中判断也的确有着控制流程走向的作用,可以说循环,判断,数组是vba的三驾马车,绝大部分的问题都是他们仨来解决的。其中for循环和if是新手最先学到的东西,今天我就来分享一下我这个新手在安装"阀门"的时候遇到过的坑。

提到判断,首先不得不提的就是IF函数,通常情况下IF有四中写法

第一种, 开关型单句

如下图:这是一个单句, 这是我自己取得名字,为了好理解,我们给他们取个外号"限定阀",在满足某个条件时启动执行某些语句.这样写的好处是加上备注以后一目了然,一看就知道有一个"阀门",不过这是我的个人习惯,在其他情况下,建议使用下面的方法.

63c71f36707131a0be468f1702544486.png

第二种,开关型

这还是我自己取得名字,为了好理解,我们依旧给他们取个外号,"球阀",达到某条件就执行某个操作,就像水管里面的球阀,只有开关两种情况,控制上也只能是执行和不执行的区别作用同第一种一样,只不过多了一个end if ,可以将多个满足则执行的语句包起来批量控制.

18a62b78a94c9809d0b543e7bf1f8590.png

第三种,分流型

老规矩整个名字:分流控制阀,如下,可以看到if整句起到了控制流程走向的作用.

9249e60ce18bcc43aa50c11e1f702e61.png

执行后如下:

4a9e1571e29c1d473a44a6abda2f785c.png

第四种:多层控制型

如下图,这种结构足够完整,能控制不同条件的"水流"流向多个方向.在这里就不演示and和or了

b2e85ce4186bfcad0253fe940b9a713a.png

为什么我会说他有坑呢?因为在一段程序中我们会时常遇到一个问题到底是用if包一个if,还是用if连接一个if以及判断的位置问题.

先看个例子:

73ef293ef9ea7462ecbf14456a3b2a42.png
ea92bd9d45a9961c6cf5da59eb961de7.png

这是代码和执行结果,在do/loop循环中,while i> 2 是判断条件,判定符合条件则执行.下列语句,在上述代码中I = I +1 执行以后I = 2 ,符合while >-=2,所以代码可以得到右侧结果,但是如果写成下方这样,则不执行,因为在I = i+1执行前就已经经过了while判断,此时i=1,不符合.所以无结果

9a034e0ab7bb8cb2072b285c4878bb8e.png

由上可以得到一个结论,判断语句放置的地方一定要考究否则就会出bug,有些需要执行的语句就不执行.所以if作为常用判断语句,其放置的地方一定是要符合逻辑下面总结一下我见过的两种形式,更多复杂的样式大家可自行拓展.这里只做模型.

(1) If /end if---if/end if 连接型

一般情况下,两个判断是独立的时候才需要写两个if,

f46a63b0305997f064e2ac692cce1062.png

如上,我需要删除考试没写名字的考生,也要选出语文为70分以上的考生标记为黄色,那么我就需要做两个if语段,代码如下

b6cc3d09974fa4658d1a692cde6e2238.png

结果如下:

5df3a0ab7fb9d54935a84548c3191fd7.png

这个就是典型的两个独立的if在for循环中的应用,值得注意的是这两个if在程序中是都会被执行的.但是下面这种情况就不一样了,第一个if会被执行,但是第二个就不一定了,

(2) If –if/end if – end if ,第二种,if包含if

依旧是上面的例子,在找到语文为70分以上的学生以后,我希望在语文70分以上的颜色由黄色改为红色,同时数学60分以上语文70分一下的底色改成黄色.代码如下

160be427428a8f7b3ed8dbdae5fb2cb4.png

执行结果如下

5b1d164970e7a0fabeddecdf99385b5b.png

我们可以通过执行结果看到判断数学大学60分这个判断其实是被语文大于70分这个判断"阉割"过的结果.这就是if包if 的模型.

总结一下:if连if,两个判断是独立的.if包if两个判断不独立,外层的if控制里层的if.第一种连接型的适用范围是需要做两个判断,且所需要执行的代码语句不一样,比如删除和上色.不同的判定条件有不同的语句执行.第二种包裹型if,适用范围是两层判断,先筛选出来的数据要再次筛选,如果判定成功需要执行的语句一样,比如都是底色上红色,那么些一个and连接语句同时满足即可,但是执行想语句不一样,则需要写成包裹型.

补充一点:学vba时间不长,所幸认识郑老师不算太晚,见过的大神多,他们的特点就是理解能力强,思路清晰,作为新手我觉得注释很重要,一来写代码的设计思路,二来写语句的作用,这些都至关重要,再一个就是建立自己的理解模型就像上面的if,代码的设计其实是有模型思维的,任何事物借助模型都可以快速的去理解,通过修改模型,引用模块,即使很复杂的代码我们也能很快的完成。

最后给大家看看郑老师的无敌IF多层程序框图

a81f42ea9a6a9e79cff10dc5f1a5ad29.png

.最后说一点学习历程

一开始也是找各种免费课,速成课,看完速成课的最大结果其实是他给的案例你会,你自己的案例不会,还不容易百度到了吧,黄花菜都老了,这不是VBA应该有的效率,我要的是高效率,不仅快捷还要方便。于是我在QQ阅读买了书,又买了纸质书!加了群,可还是那样,书里面只带你入门,他写的很多我都会,不会的也看不懂,场面一度极其尴尬。究竟什么是提高?究竟如何才能提高?这两个问题直到我在b站看到了郑老师我才反应过来,真正的高手是能在一瞬间就有思路怎样去处理数据,也能在很短的时间里面调用写好的模块。这才是真正的高效率。这也恰恰是这么长时间我在其他课程里面没听到的东西,虽然前面走了很多弯路,不过这一个月来我每天上厕所都要看老师的视频,VBA水平突飞猛进,学习上瘾的这种感觉,比打游戏上瘾还强烈!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值