搜索
写经验 领红包
 > 教育

excelvba其实很简单(execelvba)

导语:Excel VBA入门之让你大失所望的“=”

excel vba其实很简单(execel vba)

VBA中的“=”应该是最简单易懂的符号之一了,它与我们所学的数学等号几乎相通:小学数学中它是“天平”,保证两侧平衡无差;初中数学它变成了“通道”,从右侧“传值”给左侧;总结起来“=”的作用只有两个:比大小和赋值!

这听起来很简单,但在实际程序中的运用很可能让人头疼,比如下面这段代码,你知道A1及A2单元格会显示的数据是多少?

我们可以先用初中的代数逻辑做下简单的推理:x、y分别被赋值10和20,之后x、y均被新值30覆盖,所以最终x、y均为30,A1和A2均显示30。来看看运行结果吧:

全错!大失所望,是吗?数学的逻辑都崩塌掉了?……

不用着急,先思考一下:等号的作用只有比大小和赋值两种,如果是比大小其左右两侧的值均不会发生变化,赋值则会造成左侧量值变化!我们顺着这个思路找下去,也许可以发现问题所在。

先增加一句Msgbox检验下前两句代码是否确实在赋值:

没问题,前两句确实在赋值!但经过连等操作后x由10变0,y值并没有发生变化!也就是说x=y=30这个语句,x后的等号在赋值,y后的等号在比大小!而且计算的顺序是从右向左!也许写成这样更准确:x=(y=30)

现在,我们直接弹窗检测y=30这个式子的值看看

结果为False!看过我的《Excel VBA入门之双面间谍》的朋友也许现在已经明白了:y值为20不等于30,故y=30的结果为False,False的本质是数值所以可以赋值给Integer类型的x,且False所对应的整数默认值正是0,故x的值为0!

现在我将整个代码添上备注供你细品:

这也引出一个针对VBA中连等甚至多等表达式的简单规则:1.赋值动作只有一次且在最左侧(从左到右的第一个等号);2.整个式子计算顺序为:从右向左。

所以,下方代码的x、y结果你已经心中有数了,对吗?

特别备注:文尾所总结的规则,其第一点不适用于if语句。

本文内容由小媛整理编辑!