Gotoメソッド解説(Excel VBA)

Excel VBA: Gotoメソッドの解説

VBAのGotoステートメントは、コードの特定のセクションに直接ジャンプすることが可能です。基本的には、エラーハンドリングの一環として使用されますが、慎重に使用しなければなりません。その理由は、Gotoステートメントがコードの読みやすさとフローの論理性を破壊する可能性があるからです。

基本的な使用方法

Gotoステートメントの後には、移動先のラベル名(任意の名前)が続きます。このラベルは、ジャンプ先となるコードの先頭に位置します。ラベル名の後には必ずコロン(:)が必要です。


    Sub GotoExample()
        Dim cellValue As Variant
        cellValue = ActiveCell.Value

        If IsNumeric(cellValue) Then
            GoTo NumericLabel
        End If

        MsgBox "Active cell does not contain a number."

        Exit Sub

    NumericLabel:
        MsgBox "Active cell contains the number: " & cellValue
    End Sub
    

このコードでは、アクティブセルの値が数値である場合、コードはNumericLabel:ラベルに直接ジャンプします。その結果、”Active cell does not contain a number.”というメッセージボックスは表示されません。代わりに、アクティブセルの数値を表示します。

注意点

Gotoステートメントはあまりにも自由なジャンプが可能なため、コードのフローを読みづらくする可能性があります。したがって、必要な場合(主にエラーハンドリング)にのみ使用することが推奨されます。

エラーハンドリングでの使用例

以下は、エラーハンドリングでGotoステートメントを使用する一例です。


    Sub GotoErrorHandlingExample()
        On Error GoTo ErrorHandler

        ' Code here...

        Exit Sub
    ErrorHandler:
        ' Error handling code
        MsgBox "An error occurred: " & Err.Description
    End Sub
    

この場合、On Error GoToステートメントがエラーが発生したときにジャンプする場所を指定します。エラーが発生すると、コントロールはErrorHandlerラベルに移動し、エラーメッセージが表示されます。