Excel VBA之第二十九课
接着上一课的VBA教程继续,由于VBA允许程序员在不同模块中定义相同名称的过程,但是同一个模块中又不能建立相同名称的过程,故这里就出现了一个过程调用的问题。当一个过程被另一个过程调用的时候,可以分为两种情况:模块内调用和模块间调用。
1、模块内调用
也就是说主过程和被调用过程都在同一个模块之中,这种情况很简单可以直接调用。
2、模块间调用
也就是说主过程和被调用过程不在同一个模块中,这里就不可避免地出现了一个问题,如果被调用的过程名和主过程所在模块的其他某个过程名相同肿么办呢?此时必须要用模块名来限定一下,调用方式同上。例:模块1.Sub1。这对于以后要学习的窗体来说也是一样一样的。例:frm1.Sub1
3、过程的调用语法
无论是模块内调用还是模块间调用,都是使用相同的调用语法,比如子过程1在执行到某一步的时候需要调用过程2,这种情况很常见,关键是我们要注意一下被调用的过程2的特点,在这里我把它分为两种情况:
(1)、如果过程2的过程名字后面的括号里面有写定义的参数,此时的调用方式有两种,一种是:Call 过程名(参数),另一种是:过程名 参数。同时说明在调用过程2的时候要用到过程1里面的有些参数为过程2传递值,此时要注意值的传递方式,是值传递(ByVal)还是地址传递(ByRef)。
示例:
运行子过程1的结果:
(2)、如果子过程2的过程名字后面的括号里面没有写定义的参数,此时有两种调用方式,一种是:Call 过程名,一种是:过程名。同时说明在调用子过程2的时候并不需要使用子过程1里面的任何参数,即仅仅是运行一下子过程2。
示例:
运行子过程1的结果:
以上的例子是模块内的两个过程的调用演示,模块间调用的时候请自觉加上相应的模块名!
以上两种方式我个人喜欢第二种,大家根据自己的习惯选择吧。
职场办公,快人一步!