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,以避免出现错误消息。