3.4.1-Sub间的调用

如上所述,本章代码涉及4个Sub过程,其中Sub-S0201被Sub-S02调用,调用方式如下:Call Sub名称

Call S0201_文件处理(longName, shortName)

一个完整的代码需要的实现的功能有很多,我们可以将所有代码写在一个Sub中,但是后期的维护优化将会非常困难。就像一台汽车有很多零件,当某个零件损坏时我们可以花很少的成本进行维修,而不是直接重新买一台汽车。如何写代码?这里我们联想到积木拼装的方法,将整个代码分解成多个功能块,每个功能块只负责实现一部分功能,所有功能块组合实现全部功能。当某个功能块出现问题,我们只需要关注该部分即可,而不需要通读全篇代码,一行一行排查。

在VBA中每一个Sub过程即为一个功能块,实现特定功能,对于重复且需要被在不同地方反复使用的功能模块,特别建议将其独立为一个Sub,当然每一个Sub代码都不宜过长也不宜过短,这里就要看个人的经验了。Sub之间除了顺序执行,也有可能存在一些调用关系。

那么问题来了,不同Sub之间如何调用?如果每次调用需要的功能虽然一样,但是某些变量的取值不同,就像长方形面积S = 长a * 宽b,这就像一个独立的模块,计算不同长方形该公式一直成立,但是针对具体的长方形,我们需要使用具体的长度如3m,宽度如4m。在调用S0201过程中,我们也传递了两个参数:longName, shortName。本章中4个Sub间关系如图3-6


../_images/3-6.png

图3-6 Sub间关系