【发布时间】:2013-06-10 16:03:20
【问题描述】:
这可能是我在这里问过的最愚蠢的问题,但很难找到此类问题的答案。
我有一个带有一堆模块/子程序的程序,每个模块/子程序计算一个不同的变量。它们非常复杂,所以我喜欢将它们分开。现在我想要一个较早的模块根据用户输入跳到另一个模块。我以为我可以为此使用call (sub name) 方法,但随后程序返回到调用行所在的位置,并从中断处继续执行该模块。
例子:
模块 1:
Sub NewPracticeSub()
Call otherpracticesub
MsgBox ("We've gone back to this sub... :(")
End Sub
模块 2:
Sub otherpracticesub()
MsgBox ("We're in the other practice sub!")
End Sub
我不希望它返回到模块 1。如果没有它在模块 2 完成后返回完整的模块 1,我该怎么做才能让它将控制权切换到模块 2?
我觉得我只是使用了最令人困惑的语言来解释所有这些,但无论如何感谢您的帮助!
编辑:我知道我可以互换使用模块和子这两个词,而且我知道它们是不同的。我喜欢将每个子程序(在我的程序中每个子程序都非常大)保存在它们自己的模块中,因为这样更容易跟踪它们,并且更容易向其他人解释/演示应用程序流程。
【问题讨论】:
-
我不希望它返回到模块 1。 为什么不呢? 这就是调用堆栈的工作原理。下面约翰的回答是一个很好的解决方法,但可能您需要更好地组织您的子例程和调用。
-
您可以在您的子程序中使用
End,但这会中止所有运行时过程,杀死所有变量等,应该避免使用。
标签: vba excel excel-2010 excel-2013