分享

VBA在宏过程中调用其他宏过程的两种方式:Call方法,Application.Run

 建发图书 2024-04-27 发布于广东

我们编写VBA程序时,可以在一个Sub子过程中将所有代码写完。也可以分过多sub过程,每个sub子过程实现其中一个功能,最后在依次调用运行各个子过程,形成最终结果。

如果在一个子过程写完所有代码,要注意,一个子过程大小限制在64k以内,否则将因为过程太大,无法编译。我曾经处理过一个非常复杂的考勤需求,在一个过程中写了近3000行代码,结果运行时报错提示,过程太大,无法编译。后来将这整个程序,分解成了21个过程,然后在主程序中用Call调用,才得以运行。

调用其他过程常使用Call方法,如下代码

Sub main()
  Call Macro1
  Call Macro2
  Call Macro3
End Sub

Macro1Macro2Macro3分别为另外3个过程名称,通过Call方法直接呼叫他们即可。

Call方法调用过程时,被调用的过程名必须是一个已有过程的名称,书写时不带引号,不能含有变量。

我们知道,类似这种写法“Macro& i,一段文本,再用连接符&连接其他数据,表示的是一个字符串,Call方法之后不能是文本,所以不要对过程名加引号。

有时候,我们需要能识别文本过程名并运行,比如“Macro1”,带引号,就让程序去调用Macro1过程。这类似与工作表函数INDIRECT,返回文本所代表的引用。此时可以使用Application对象的Run方法。如下语句

Sub mainrun()
For i=1 to 3
Application.Run 'Macro' & i
Next
End Sub

由于调用的3个过程名称只有序号的变化,以上语句使用Run方法,参数为文本形式的过程名'Macro' & i,这样就可以放在循环体中,通过变量调用,不用每个过程依次写下来了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多