VBA返回|如何在VBA中使用GoSub返回语句?
Excel VBA返回声明
对于那些了解VBA内外编码的人来说,VBA很棒,而且是一个救命稻草,它可以节省我们工作场所的大量时间。在我们之前的文章中,我们讨论了VBA返回的许多事物和概念。这样的概念之一就是GoSub Return语句。在本文中,我们将向您介绍这些概念。
什么是GoSub退货声明?
语句“ Go Sub”表示它将转到标签通过名称显示的代码行,并执行一组特定的任务,直到找到语句“ Return”。
这类似于错误处理程序语句“ GoTo Label”,但“ GoSub Return”的作用是它将返回到下一行代码,而不是从标签名称继续。
下面是VBA GoSub Return语句的语法。
GoSub [标签名称]…..代码行[标签名称]:…..执行任务的代码行
我知道很难通过阅读语法来理解,但是通过使用示例,您也许可以理解这个概念。
在进入示例之前,让我先介绍一下此声明。
- GoSub语句调用vba中的子例程,该子例程由同一例程或函数中的标签命名。
- GoSub和Return应该都在同一过程中,我们不能在此处调用另一个子例程宏。
- 您可以引入任意数量的GoSub Return语句。
- return语句将从代码中断处继续执行,然后再跳转到由标签名称指示的子过程。
如何在VBA中使用GoSub返回语句?
您可以在此处下载此VBA返回Excel模板– VBA返回Excel模板范例#1
要了解此语句的用法,请先看下面的代码,稍后我将逐行向您解释该代码。
代码:
Sub Go_Sub_Return()GoSub Macro1'标签名称1 GoSub Macro2'标签名称2 GoSub Macro3'标签名称3退出Sub Macro1:MsgBox“正在运行Macro1”返回Macro2:MsgBox“正在运行Macro2”返回Macro3:MsgBox“正在运行Macro3”返回结束Sub
要理解此代码,请按F8键逐行运行该代码。第一次按F8键将启动宏运行。
现在再按一次F8键转到下一行。
我们都知道宏将逐行运行代码,但是如果您按F8键,它将不会转到下一行,而是以不同的方式运行。
它已跳转到名为“ Macro1”的标签,这是因为在上一条语句“ GoSub”中,我们指示宏转到子过程标签名称“ Macro1”,因此相应地,它也已跳转至相应的标签名称。
现在,按F8键,excel宏将执行标签“ Macro1”的任务,在消息框中显示结果。
单击消息框的“确定”以返回到编码窗口。
现在,如果您再按一次F8键,它将突出显示“ Return”语句,它将执行的操作是它将“ Return Back”返回到上一行代码,然后跳转到标签名称。
上次执行代码“ GoSub Macro1”并且执行标签名称“ Macro1”任务是因为我们提到了“ Return”语句,因此返回到下一行代码,即
“ GoSub Macro2”
声明说的是,“定位标签命名为Macro2”。在下面的标签“ Macro2”中,我提到了一组特定的任务。
现在,我们将获得第二个子过程任务,即在消息框中显示值。
现在单击确定,它将突出显示第二个“返回”语句。
现在,单击F8键,它将返回到下一行代码,然后返回到标签“ Macro2”。现在它将突出显示“ GoSub Macro3”。
现在它将转到标签“ Macro3”,然后按F8键。
现在将执行第三个标签任务。
现在单击确定,它将突出显示“返回”语句。
现在再按一次F8键,它将跳回到代码“ Exit Sub”行。
不,它将退出子程序。必须添加单词“ Exit Sub”,否则会遇到错误。
范例#2
现在来看一下使用GoSub Return语句的另一个示例。
代码:
Sub Go_Sub_Return1()Dim Num as Long Num = Application.InputBox(提示:=“请在此处输入数字”,标题:=“分区编号”)如果Num> 10然后GoSub除法其他MsgBox“数字小于10”子结束,如果退出子分组:MsgBox Num / 5 Return End Sub
此代码将要求您输入> 10的数字,如果数字> 10,则它将执行将其除以5(标签名称为“ Division”)的任务,否则将显示消息为 “数量小于10”。
要记住的事情
- 标签名称在GoSub和Return语句中应相同,并且在返回语句中,标签名称后应带有冒号(:)。
- 完成所有return语句后,请始终在VBA中使用Exit Sub,以避免出现错误消息。