关于VB goto 和if else的问题
If Not mode Then
COM1.InputLen = 14
COM1.InBufferCount = 0
COM1.Output = outData
tl = timeGetTime
...........
Else
toNext:
COM1.InputLen = 1
Do Until COM1.InBufferCount > 13
DoEvents
Sleep 2
Loop
…………
End If
Else 后面没有什么东西了,直接跟着toNext: ,难道else 之后执行的就是toNext: 里面的程序吗? 不是只有goto才能进入到toNext:里吗?
看清我的提问:我是问,为什么 Else 后面没有东西了而是跟着toNext: 然后才是end if 难道else之后直接执行toNext:里的内容?
下面还有一段程序,同样是困惑:如果说chkagain:只有goto指过去才能执行,那么可以看到下面的程序,goto 在chkagain:之下,也就是说,进去了才有可能执行到:If SetWenda Then GoTo chkagain 然后返回来chkagain:,所以我要问的是,是不是程序执行到chkagain:处,会当做一般的程序,继续执行chkagain:以下的内容,然后如果有goto 指向过来,也可以直接跳过来?
If COM1.PortOpen = True Then COM1.PortOpen = False
comSetting = Combo1.Text & ",n,8,1 "
COM1.Settings = comSetting
COM1.CommPort = Val(Combo1)
COM1.InputLen = 14
COM1.PortOpen = True
chkagain: COM1.InBufferCount = 0
Sleep 150 '延时150ms
If COM1.InBufferCount > 10 Then '>10说明开始有数据返回
If SetWenda Then GoTo chkagain
If False Then
Label1 = "BROADCAST "
ExBtn3.Enabled = False
bOnline = True
mode = True
' ExBtn5.Enabled = False
ExBtn6.Enabled = False
ExBtn7.Enabled = False
ExBtn9.Enabled = False
' ExBtn12.Enabled = False
' ExBtn13.Enabled = False
' ExBtn14.Enabled = False
MMButton_MACE1.Enabled = True
MMButton_MACE2.Enabled = True
End If
Else
[最优解释]
toNext:
只是一个位置标签,表示位置,你可以在程序的任何位置加入位置标签,但该标签只有goto语句有用,不使用也没关系
[其他解释]
标签本身是不影响程序的正常往下运行的,调用是只有goto可以
不过第一段的那个写法让人看了很乱
[其他解释]
if 完了之后 加上END if 就好了
[其他解释]
GoTo 语句示例
本示例使用 GoTo 语句在一个过程内的不同程序段间作流程控制,不同程序段用不同的“程序标签”来区隔。
Sub GotoStatementDemo()
Dim Number, MyString
Number = 1 ' 设置变量初始值。
' 判断 Number 的值以决定要完成那一个程序区段(以“程序标签”来表式)。
If Number = 1 Then GoTo Line1 Else GoTo Line2
Line1:
MyString = "Number equals 1"
GoTo LastLine ' 完成最后一行。
Line2:
' 下列的语句根本不会被完成。
MyString = "Number equals 2"
LastLine:
Debug.Print MyString ' 将“"Number equals 1"”显示在“立即”窗口。
End Sub
[其他解释]
自己解决了,但是内心还是非常感谢大家的回答!!