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
ラベルに移動し、エラーメッセージが表示されます。