Vb6 提前结案
因此,我在Vb6中有如下内容:Vb6 提前结案,vb6,exit,select-case,Vb6,Exit,Select Case,因此,我在Vb6中有如下内容: Select case Case case "Case0" ... case "Case1" if Condition Then Exit Select End If *Perform action* case "Case2" ... End Select 但是由于某些原因,myExit Select抛出了预期的错误:Do或for或Sub或Function或Property。我知道,不漂亮。我应该用别的东西吗?我可以只使用if语句,
Select case Case
case "Case0"
...
case "Case1"
if Condition Then
Exit Select
End If
*Perform action*
case "Case2"
...
End Select
但是由于某些原因,myExit Select
抛出了预期的错误:Do或for或Sub或Function或Property。我知道,不漂亮。我应该用别的东西吗?我可以只使用if
语句,而不提前退出案例,但这需要重复代码,我希望避免重复代码。任何帮助都将不胜感激
更新
尝试将
Exit Select
更改为End Select
,但出现错误End Select without Select Case
。它肯定位于选择案例
和结束选择
中。不幸的是,VB6没有可用的退出选择
子句
这在VB.NET中是唯一可用的 VB6中没有
Exit Select
语句-仅限VB.NET
查看的语言参考-没有提到退出选择
最好的选择是将select语句重构成一个新的子例程,然后只退出SubVB没有退出
select
块的功能。
相反,您需要将内容设置为有条件的,可能会将退出选择设置为有条件的
Select case Case
case "Case0"
...
case "Case1"
If Not Condition Then
*Perform action*
End If
case "Case2"
...
End Select
这将有完全相同的最终结果。试试这个
Do
Select case Case
case "Case0"
...
case "Case1"
if Condition Then
Exit Do
End If
*Perform action*
case "Case2"
...
End Select
Loop While False
编辑:顺便说一句,在这种情况下,我会毫不犹豫地使用GoTo
。刚刚发现了一些非常琐碎的东西,它起到了关键作用:
Select case Case
case "Case0"
...
case "Case1"
A=A
case "Case2"
...
End Selec
用另一种方式回答这个老问题,你也可以使用GoTo:
Select case Case
case "Case0"
...
case "Case1" 'you can use not condition as stated
if Condition Then GoTo Exit_select
*Perform action*
case "Case2"
...
Exit_select:
End Select
这是你的真实代码吗?您已经定义了两次Case1
,如果是的话。枚举变量的数据类型和比较它的值是什么?@Widor该变量是一个字符串的DB调用,并且正在与字符串进行比较。您是否可以将代码更新为有效的VB,因为它现在会抛出各种各样的错误,你需要首先排除它们。例如,案例1
应该是案例“Case1”
等等。waaaa可能有太多的代码,我无法直接复制,在我开始编辑此案例陈述之前,它工作正常,因此我们可以排除代码其余部分的问题。另外,编译器特别指向退出选择
@killianmcc-它们在VB6中都可以正常工作-这是VB6语言参考!对不起,这意味着他们能让我尽早摆脱案例吗?@killianmcc-看看我上面编辑的答案,找到可能的解决方案+1。并将“执行操作”变成一个子程序,以确保可读性在实际版本中,逻辑相当复杂,如果有一个结束选择
,它会很方便,但我最终还是按照这些思路做了一些事情。没有回答前面提到的问题。抱歉,但在某些情况下,您确实希望提前退出。@HenrikErlandsson我刚刚添加了一段开头,解释得更多一些。希望这样更好?同意GoTo
。我不确定我是否能支持Do。。。在错误时循环
尽管…:p@Deannado{…}while(0)
是非常流行的用于早期退出(以及正确的宏扩展)的普通C语言习惯用法。我真的希望VB6等价的do/Loop
也是编译器的一个亮点。