2.1 变量的作用与含义
2.1.1 为什么需要使用变量
编程序其实就是将人类的思考过程,使用计算机语言描述出来,从而让计算机也能像人类一样去思考(计算)。人类大脑最基本的思考模式就是:将问题分解为若干个步骤,并依次计算→每计算完一个步骤,就记住这一步得到的结果→每个步骤都可能用到前面某一步的计算结果,直至完成最后一步并得到最终答案。在这个过程中,记住中间结果非常重要。
比如,当我们计算“22+32”这个算式时,会将它分解为三个主要步骤:
① 计算22。得到4这个中间结果并记在大脑内部的某处;
② 计算32。得到9这个中间结果,也将它记在大脑某处;
③ 把在①和②中记住的两个中间结果都取出来并相加,从而得到最终结果13。
程序设计也一样。任何一个复杂的程序,都需要被分解为很多步骤,因此会产生和保存大量的中间结果。如果程序中没有保存某个步骤的结果,当需要使用它时,就不得不将该步骤重新计算一遍,这样写出来的程序代码就会变得很长,也影响效率。
案例2-1:在图2.1所示的工作表中,存有员工张三的时薪和当月工时,二者相乘就是他的当月工资。现在,公司需要按照他的本月总工资为其发放岗位津贴、当月奖金和劳保补助,所以需要编写一个VBA程序,只要单击“计算本月福利”按钮就能把这三个金额计算并显示在单元格中。计算规则为:岗位津贴=当月工资×20%,当月奖金=当月工资×10 %,劳保补助=当月工资×5%。
图2.1 案例2-1工作表示意
按照前面讲过的Cells属性和算术运算等知识,读者可以很轻松地写出下面的程序,并将其关联到图中的按钮上,正确计算出各项应发福利。
不过在这个程序中,“Cells(4,3)* Cells(4,4)”这段代码多次出现,写起来十分烦琐耗时,也让代码显得非常冗长。这段的含义是根据C4单元格的时薪与D4单元格的本月工时计算出当月工资,以便计算各项福利金额,但是当月工资的计算其实并不需要重复出现在所有语句中。如果让大家计算,一定会先把当月工资(50×100)作为第一个步骤计算出来,得到5000这个数字,将其作为中间结果记在心里或写在纸上。然后每计算一项福利时,就找出这个数字直接使用,而不是重新计算50×100。
那么怎样修改这个程序,使它也能先计算出50×100的结果并记住,从而不必重写呢?使用“变量”就是解决这一问题的最好方法。