深入浅出Excel VBA
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.1.4 前后对比——使用变量的好处

前面讲了很多变量的本质这种形而上的概念,接下来我们回到实用主义的视角,以案例2-1为例,对比一下使用变量之后程序的代码质量到底有哪些提升,如图2.3所示。

图2.3 案例2-1及其两种解决方案

(1)代码简洁,省时、省力。这一点可以非常直观地感受到:由于更改后的代码中使用变量x替代了 Cells(4,3)* Cells(4,4)这一串字符,所以可以明显减少敲击键盘的次数,加快开发速度。而且新的代码阅读起来更加方便,不必每读一行都要去思考Cells(4,3)* Cells(4,4)代表什么。

(2)降低了拼写错误的概率。在更改前的代码中,需要多次重写Cells(4,3)* Cells(4,4)这个复杂的表达式。我们必须保证这些重复书写的表达式完全相同,否则就会造成“数据不一致”这种错误,即计算某个项目时使用的数字,与计算其他项目时所使用的数字不同。

例如,如果将左边代码的第二行误写成Cells(4,6)=Cells(4,3)* Cells(4,3)* 0.1,就等于在计算“当月奖金”时使用的“本月工时”数字是C4单元格的内容50,然而在计算其他两项福利时,使用的“本月工时”仍然是D4单元格中的100。

但在使用变量 x 以后,唯一能够发生这种错误的地方就是 x=Cells(4,3)*Cells(4,4)。而且即使在这里写错,比如误写为 x=Cells(4,3)* Cells(4,3),后面所有用到x的算式也会同步地受到影响,相互之间至少还是一致的。而保持这种“一致性”,在很多场合下十分重要。

(3)便于修改,机动灵活。讲到“一致性”,就会引出使用变量的另一个优点——便于修改。假如我们对案例2-1中的表格进行了格式调整,把“时薪”的数据从C4单元格改写到A4单元格,把“本月工时”的数据从D4单元格改写到B4单元格,那么就需要对VBA程序也进行修改。

如果没有使用变量,我们需要把每行代码里面的 Cells(4,3)改成 Cells(4,1),把 Cells(4,4)改成Cells(4,2),一共需要修改6处。但是在使用变量x的程序中,我们只需让x=Cells(4,1)* Cells(4,2)即可,一共只要修改两处,后面的语句完全保持不变。

我们学习程序设计的初衷就是希望能够把日常操作写成通用代码,从而一劳永逸,所以这种“稍加修改”甚至“不必修改”就能够适应不同表格结构的编程方法,实在是非常重要。

(4)减少重复计算,提高工作效率。在没有使用变量的代码中,每行代码都要执行两次乘法运算,整个程序执行了6次乘法运算。而在更改后的代码中,一共执行了4次乘法运算,速度自然有所提高。当然,对于计算机来说,多做两次乘法运算对性能的影响完全可以忽略不计。不过在实际工作中,我们往往需要处理数万条甚至数十万条数据,在这种情况下,如果每次处理可以节省一两次计算操作,整个程序的运行效率将会有非常明显的提升。除了减少乘法操作,使用变量 x后的代码中还大量减少了对Cells属性的使用。而VBA查询Cells(4,3)的数值要比查询变量x多耗费几倍的时间。因此,使用变量对程序性能的提升效果就更加显著了。

所以,请各位初学程序设计的读者牢记第一条重要的VBA编程原则:

把每个将会重复出现的数据定义为变量!