教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 構文】GoTo文(処理を途中でスキップ)の使い方を教えて!

構文

構文は以下の通りです。

GoTo ラベル
ラベル:

GoTo文は、指定したラベルにジャンプするために使用されます。GoTo文では、"GoTo"の後にジャンプ先のラベル名を指定します。ジャンプ先のラベルは、コロン(:)を使って行の先頭に定義します。ラベルはコード内で任意の場所に設定することができます。

使い方

以下では、具体的な使い方の例をいくつか紹介します。

1.条件に応じた処理のスキップ

条件によって特定の処理をスキップする場合にGoTo文を使用します。以下の例では、変数xの値が0以下の場合に処理をスキップします。

Sub SkipProcessing()
    Dim x As Integer
    x = -10
    If x <= 0 Then
        GoTo SkipLabel
    End If
    ' 条件を満たす場合の処理
    MsgBox "処理が実行されました。"
SkipLabel:
    ' スキップされた場合の処理
End Sub

この例では、変数xの値が0以下の場合、GoTo文を使用して処理をSkipLabelというラベルにジャンプさせています。その結果、条件を満たさない場合の処理がスキップされます。

2.エラーハンドリング

GoTo文は、エラーハンドリングの際にも役立ちます。以下の例では、エラーが発生した場合にエラーメッセージを表示し、エラー処理を行います。

Sub ErrorHandler()
    On Error GoTo ErrorHandlerLabel
    ' エラーが発生する可能性のある処理
    Dim x As Integer
    x = 10 / 0
    ' エラーが発生しなかった場合の処理
    MsgBox "処理が正常に実行されました。"
ExitSub:
    Exit Sub
ErrorHandlerLabel:
    MsgBox "エラーが発生しました: " & Err.Description
    Resume ExitSub
End Sub

この例では、10を0で割るというエラーが発生する可能性のある処理を行っています。On Error文を使用して、エラーハンドリングを開始し、エラーが発生した場合にErrorHandlerLabelというラベルにジャンプします。エラーが発生しなかった場合は、正常な処理が実行されます。エラーが発生した場合は、エラーメッセージを表示し、Resume文を使用してExitSubというラベルにジャンプし、エラー処理を行います。

まとめ

GoTo文は、特定のラベルにジャンプして処理を中断したり、別の場所に移動したりするための機能です。GoTo文を使用することで、条件に応じた処理のスキップやエラーハンドリングなど、柔軟なプログラミングが可能になります。ただし、GoTo文は制御の流れを複雑にするため、必要以上に使用すると可読性や保守性が低下する可能性があります。注意してください。