在子例程中退出 Select Case

Posted

技术标签:

【中文标题】在子例程中退出 Select Case【英文标题】:Exiting a Select Case in a Subroutine 【发布时间】:2019-03-09 16:41:15 【问题描述】:

我有一个问题,

在我的主要标签中,我的函数/子例程一旦完成就会相互跟随。然后我的第三个子例程之一包含一个选择案例,对于输入 5 我希望它继续到下一个子例程,但是我不确定如何执行此操作。

Sub Main()

    Task723()
    Task724()
    Task731()

End Sub

Sub Task723()
    Dim x0 = -20 ' Initial values assumed
    Dim ch As Integer
    ch = 5
    While ch <> 0
Line2:
        Console.WriteLine(vbLf & "(1)option1"
        Console.WriteLine(vbLf & "(2)option2")
        Console.WriteLine(vbLf & "(3)option3")
        Console.WriteLine(vbLf & "(4)option4")
        Console.WriteLine(vbLf & "(5)to go next")
        Console.Write(vbLf & "Enter Your Choice :")
        ch = Integer.Parse(Console.ReadLine())
        Select Case ch
            Case 1
                option1(x0)
                Console.WriteLine(vbLf & "Press Any Key To Continue...")
                Console.ReadLine()
                Console.Clear()
            Case 2
                option2(x0)
                Console.WriteLine(vbLf & "Press Any Key To Continue...")
                Console.ReadLine()
                Console.Clear()
            Case 3
                option3(x0)
                Console.WriteLine(vbLf & "Press Any Key To Continue...")
                Console.ReadLine()
                Console.Clear()
            Case 4
                option4(x0)
                Console.WriteLine(vbLf & "Press Any Key To Continue...")
                Console.ReadLine()
                Console.Clear()
            Case 5
                Console.Clear()
                GoTo Line4

            Case Else
                Console.Clear()
                Console.WriteLine(vbLf & "Invalid Input, Please Try Again")
                GoTo Line2


        End Select
Line4:
    End While
End Sub

【问题讨论】:

【参考方案1】:

您只想将ch 设置为0 并退出后续While ch &lt;&gt; 0 检查

            Case 5
                Console.Clear()
                ch = 0

顺便说一句,你不需要Line2:Line4: 以及GoTo Line2GoTo Line4

【讨论】:

以上是关于在子例程中退出 Select Case的主要内容,如果未能解决你的问题,请参考以下文章

仅在子例程中需要时才使用 Perl 模块

模块化程序-子例程

将两个或多个数组传递给 Perl 子例程

如何让 VBA 子例程调用将数组传递给子例程中的另一个函数的函数

在不同的私有子例程中使用公共声明的数组时下标超出范围

如何在 Perl 子例程中处理已捕获和未捕获的错误?