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语句,

因此,我在Vb6中有如下内容:

Select case Case

case "Case0"
...

case "Case1"
  if Condition Then
     Exit Select
  End If
  *Perform action*

case "Case2"
...

End Select
但是由于某些原因,my
Exit 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语句重构成一个新的子例程,然后只退出Sub

VB没有退出
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@Deanna
do{…}while(0)
是非常流行的用于早期退出(以及正确的宏扩展)的普通C语言习惯用法。我真的希望VB6等价的
do/Loop
也是编译器的一个亮点。