请教一下goto用法

6lilu9 2014-11-13 04:12:03
Sub GotoStatementDemo()
Dim Number, MyString
Number = 1

If Number = 1 Then GoTo Line1

MsgBox "请问是显示1呢还是2?"

Line1:
MyString = "Number equals 1"
End If

Line2:

MyString = "Number equals 2"


LastLine:
Debug.Print MyString

End Sub


在上述代码中,遇到goto语句时代码流程到底是咋样的?我的理解是应该按照gogo语句先执行line1,执行完成后再返回,执行 MsgBox "请问是显示1呢还是2?" 语句,可事实是先执行line1,后执行line2,执行lastline ,结束。

请问如果想达到我的效果,应该如何做?
...全文
244 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2014-11-14
  • 打赏
  • 举报
回复
这代码能编译么? If Number = 1 Then GoTo Line1 相当于 If Number = 1 Then GoTo Line1 End If 注意,这是单行If语句, MsgBox "请问是显示1呢还是2?"并不包括在If分之中。 按理说你这么写会收到一个End If没有对应的If匹配的错误。
熊孩子开学喽 2014-11-14
  • 打赏
  • 举报
回复
除了On Error Goto Errline 之外, 不推荐任何地方使用goto 即便是On Error goto, 也只是便于调式而用, 不要把这个看作正常的程序跳转 总而言之: 结构化的编程不需要goto
Dark-Source 2014-11-13
  • 打赏
  • 举报
回复
Goto的话需要使用 Exit Sub或者是Exit Function这两个函数用于终止,否则的话标签会继续运行,就像C语言的switch函数一样,必须要用break终止一样.
笨狗先飞 2014-11-13
  • 打赏
  • 举报
回复
楼主代码没出语法错误吗? 怎么 end if 会出现在这种地方 试试 On Number Goto Line1,Line2,Line3
楚狂歌 2014-11-13
  • 打赏
  • 举报
回复
如果需要执行一段代码后返回,可以用Gosub GoSub...Return 语句 在一个过程中跳到另一个子程序中执行,执行后再返回。 语法 GoSub line ... line ... Return 必要的 line 参数可以是任何行标签或行号。 说明 可以在过程中的任何地方使用 GoSub 和 Return,但是 GoSub 和与之相应的 Return 语句必须放在同一个过程中。一个子程序中可以包含一个以上的 Return 语句,但是当碰到第一个 Return 语句时,程序就会返回到紧接在刚刚执行的 GoSub 语句之后的语句继续执行。 注意 不能使用 GoSub...Return 来进入或退出 Sub 过程。 提示 创建分开的过程,并使用 GoSub...Return 来调用,可以使程序更具结构化。
楚狂歌 2014-11-13
  • 打赏
  • 举报
回复
Goto是不会返回的,你跳到哪里他就从哪里往下执行
6lilu9 2014-11-13
  • 打赏
  • 举报
回复
这是什么论坛,人这么少吗?

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧