我们编写VBA程序时,可以在一个Sub子过程中将所有代码写完。也可以分过多sub过程,每个sub子过程实现其中一个功能,最后在依次调用运行各个子过程,形成最终结果。 如果在一个子过程写完所有代码,要注意,一个子过程大小限制在64k以内,否则将因为过程太大,无法编译。我曾经处理过一个非常复杂的考勤需求,在一个过程中写了近3000行代码,结果运行时报错提示,过程太大,无法编译。后来将这整个程序,分解成了21个过程,然后在主程序中用Call调用,才得以运行。 调用其他过程常使用Call方法,如下代码 Sub main() Call Macro1 Call Macro2 Call Macro3 End Sub Macro1、Macro2、Macro3分别为另外3个过程名称,通过Call方法直接呼叫他们即可。 Call方法调用过程时,被调用的过程名必须是一个已有过程的名称,书写时不带引号,不能含有变量。 我们知道,类似这种写法“Macro”& i,一段文本,再用连接符&连接其他数据,表示的是一个字符串,Call方法之后不能是文本,所以不要对过程名加引号。 有时候,我们需要能识别文本过程名并运行,比如“Macro1”,带引号,就让程序去调用Macro1过程。这类似与工作表函数INDIRECT,返回文本所代表的引用。此时可以使用Application对象的Run方法。如下语句
由于调用的3个过程名称只有序号的变化,以上语句使用Run方法,参数为文本形式的过程名'Macro' & i,这样就可以放在循环体中,通过变量调用,不用每个过程依次写下来了。 |
|