1. ホーム
  2. vba

[解決済み] VBAでエラー時のGOTOステートメント

2022-03-09 16:51:04

質問

Ctrl+Fコマンドを使用してExcelシートの特定の値を検索するコードを持っていますが、コードが何も見つからなかったときに私はそれがメッセージを投げるようにしたいです。

    sub test()
    f=5
    do until cells(f,1).value=""    
    On Error goto hello  
        Cells.Find(what:=refnumber, After:=ActiveCell, LookIn:=xlFormulas, _
                    lookat:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                    MatchCase:=False, SearchFormat:=False).Activate

f=f+1

        hello: Msgbox"There is an error"

    loop

    endsub

問題は、エラーが見つからない場合でも、メッセージが表示されることです。エラーの時だけメッセージボックスを表示させたいのですが。

どうすればいいですか?

そのような場合は Exit Sub または Exit Function を作成し、あなたの hello というラベルを、コードの最後の部分に追加します。サンプルをご覧ください。

Sub test()

    f = 5

    On Error GoTo message

check:
    Do Until Cells(f, 1).Value = ""

        Cells.Find(what:=refnumber, After:=ActiveCell, LookIn:=xlFormulas, _
              lookat:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
              MatchCase:=False, SearchFormat:=False).Activate
    Loop

    Exit Sub

message:
    MsgBox "There is an error"
    f = f + 1
    GoTo check

End Sub