分享

跟烟花入门VBA之19:Goto语句

 fzchenwl 2015-03-31

 最近芒果台的《爸爸去哪儿》很火,今天咱们也来聊聊代码去哪儿之Goto语句
  通过Goto语句,可以无条件地转移到过程中的指定的行,从而实现不同程序段间作流程控制
  
  语法:
   GoTo Line
   Line:必要参数,line可以是过程内任意的行号行标签

  什么是行号?
  用来识别一行代码。

  行号可以是任何数值的组合,在使用行号的过程内,该组合是唯一的。
  行号必须在从一列开始。(输入时,不在第一列,输入完成后,会自动调整到第一列)

  Sub GotoStatementDemo()
   Dim Number, MyString
   Number = 1
   '设置变量初始值。
   

   If Number = 2 Then GoTo 1 Else GoTo 2
   '判断 Number 的值以决定要完成那一个程序区段
   

   1:               MyString = 'Number等于1'
   GoTo 3

   '完成后跳转到最后一行。
   

   2               
   MyString = 'Number等于2'
   

   3:Debug.Print MyString
   '将MyString变量的值显示在“立即”窗口。
  End Sub

  经过测试:
   A.在代码区输入行号后接着输入语句(不用在行号后输入空格)后,VBE会自动帮你在行号和语句之间填入一个空格。

   例如当在一行输入5msgbox'a'回车后,VBE会帮你修正为5  msgbox  'a'
   B.行号可以单独占一行
   C.行号后面可加可不加冒号

  什么是行标签?
  用来指示一行代码。行标签可以是任何字符的组合,以字母开头,以冒号 (:) 结尾。
  行标签与大小写无关,必须从第一列开始。

  Sub GotoStatementDemo()
   Dim Number, MyString
   Number = 1
   '设置变量初始值。
   If Number = 1 Then GoTo Line1 Else GoTo Line2
   '判断 Number 的值以决定要完成那一个程序区段

   Line1:
   MyString = 'Number等于1'
   GoTo LastLine

   ' 完成后跳转到最后一行。

   Line2:MyString = 'Number等于2'

   LastLine:
   Debug.Print MyString

   '将MyString变量的值显示在“立即”窗口。
  End Sub

  对于标签,冒号是要求必须使用的。
  如果不使用,在有编译错误的提示(子过程或函数未定义)
  同一个模块内,标签也必要是唯一的。
  例如:
   Line1:msgbox 'a'
   Line1:msgbox 'a'
    运行时会有编译错误 (当前范围内重复声明)

   另外需要注意的地方: 太多的 GoTo 语句,会使程序代码不容易阅读及调试。

   尽可能使用结构化控制语句(Do...Loop、For...Next、If...Then...Else、Select Case)。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多