当我打电话给子vba时会发生什么

时间:2015-10-30 10:14:51

标签: vba excel-2010 call

我正在使用调用函数来激活其他宏,但我并不完全确定VB如何读取此函数。 (我在MS Excel 2010中使用它)

例如:

Sub main macro ()

blabla
blabla

Call Edit
Call Save
Call HistoryLog

End Sub

此代码有一些If功能,在某些时候会进入“Call Edit” 这里将激活宏“子编辑()”。但我需要这段代码来编辑数据,将数据保存到新文件中,并在其他Excel工作表中创建历史记录。

如果VBA完成了“Sub Edit()”部分,代码将如何继续? 它会调用“Sub Save()”部分吗? 或者我是否真的要求在“子编辑()”部分的末尾键入“调用子保存”?

2 个答案:

答案 0 :(得分:1)

VBA将按照给定的顺序处理代码的所有行,除非其中一行发生错误。实际上,您的代码将停在错误点。

调用Save()的位置实际上取决于您希望代码的工作方式。如果您想确保在每次调用Edit()次更改后保存,我都会在Save()内致电Edit()。如果有时您想在不致电Edit()的情况下致电Save(),则不应将Save()的电话转入Edit()

答案 1 :(得分:0)

当您从另一个过程中调用过程时,程序控制将返回到Call行正下方的行。在您的示例中,当Edit过程到达End SubExit Sub行时,程序控件将继续Call Save行(Call Edit下方的行)

Call关键字包含在语言中以便向后兼容。您可以像

一样调用编辑程序
Edit

没有Call关键字。如果你喜欢使用Call,它不会伤害任何东西。

相关问题