2017-10-14 2 views
-2

このコードを実行すると、「ループなし」というエラーが表示されます。 "case vbno"が選択されていれば元の入力ボックスに戻ります。ユーザーが「case vbyes」を選択した場合は、セルを強調表示してからループバックして元の入力ボックスに戻ります。キャンセルを選択すると、完全に終了します。Select Caseステートメント内のDo notエラーのループ

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 

答えて

0

次のコードは、コードの各ブロックの整合性を維持しながら、必要な処理を行う必要があります。

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 

注:(Nothing.Activateが無効であるため)Findは何も一致しない場合はあなたのActivateステートメントは失敗しますが、それは別の日のための質問です。

関連する問題