在 Select Case 语句中循环没有 Do 错误

Posted

技术标签:

【中文标题】在 Select Case 语句中循环没有 Do 错误【英文标题】:Loop without Do error within Select Case statement 【发布时间】:2017-10-14 00:56:04 【问题描述】:

运行此代码时,我收到一个错误,即“没有执行的循环”。我想如果选择“case vbno”然后它返回到原来的输入框。如果用户选择“case vbyes”,我希望它突出显示然后单元格然后循环返回执行并返回到原始输入框。如果选择取消,我希望它完全退出。

Sub find_highlight3()
    Dim w As Variant
    Dim FoundCell As Range
    Dim ans As String

    Do

        w = InputBox("What to find?")

        Cells.Find(What:=(w), After:=ActiveCell, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False).Activate
        With Selection.Interior

            Select Case MsgBox("Hellow", vbYesNoCancel)

                Case vbNo

    Loop

                Case vbYes

                   .ColorIndex = 6
                   .Pattern = xlSolid
                   .PatternColorIndex = xlAutomatic

    Loop

                Case vbCancel

            End Select

        End With
End Sub

【问题讨论】:

【参考方案1】:

下面的代码应该做你想做的,同时仍然保持每个“块”代码的完整性。

Sub find_highlight3()
    Dim w As Variant
    Dim FoundCell As Range
    Dim ans As String

    Do
        w = InputBox("What to find?")

        Cells.Find(What:=(w), After:=ActiveCell, LookIn:=xlFormulas, _
            LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False).Activate

        Select Case MsgBox("Hellow", vbYesNoCancel)

            Case vbNo

            Case vbYes    
                With Selection.Interior
                    .ColorIndex = 6
                    .Pattern = xlSolid
                    .PatternColorIndex = xlAutomatic
                End With

            Case vbCancel    
                Exit Do

        End Select
    Loop
End Sub

注意:如果Find 不匹配任何内容(因为Nothing.Activate 无效),您的Activate 语句将失败,但这是另一天的问题。

【讨论】:

以上是关于在 Select Case 语句中循环没有 Do 错误的主要内容,如果未能解决你的问题,请参考以下文章

bash脚本之case语句应用,whileuntil和select循环应用及其示例

Shell脚本应用(forwhile循环语句和case分支语句)

我如何将case语句放入javascript中的循环中

shellwhile循环,C-for循环,until循环,case分支结构,流程控制语句

shell脚本应用

Shell脚本 for循环 while循环 case分支语句