GoToの概要
プログラムの実行を特定の位置へジャンプさせる VBAの予約語 | ||
GoTo 概要 GoTo ステートメントは、VBAでプログラムの制御を特定のラベル( わかりやすく説明 プログラムの実行を指定した場所に飛ばす命令。 |
||
|
GoToを使った基本的なジャンプ
以下の例では、GoTo を使って特定の位置へジャンプします。
Sub TestGoTo()
Dim num As Integer
num = 10
If num = 10 Then GoTo SkipProcessing
MsgBox "このメッセージは表示されません。"
SkipProcessing:
MsgBox "GoTo によりこの処理が実行されました。"
End Sub
解説:
GoTo SkipProcessing
:SkipProcessing:
へジャンプ。- ジャンプ後、
MsgBox "このメッセージは表示されません"
の部分はスキップされる。
エラーハンドリングでのGoToの使用
エラー発生時に特定の処理へジャンプする方法です。
Sub TestErrorHandling()
On Error GoTo ErrorHandler ' エラー時に ErrorHandler へジャンプ
' ゼロ除算エラーを発生させる
Dim x As Integer
x = 10 / 0
Exit Sub ' エラーハンドリングをスキップするために必要
ErrorHandler:
MsgBox "エラー発生: " & Err.Description
End Sub
解説:
On Error GoTo ErrorHandler
: エラー発生時にErrorHandler:
へジャンプ。Exit Sub
: エラーがなかった場合にエラーハンドリング部分を実行しないようにする。Err.Description
: エラーの内容を取得してメッセージを表示。
Excel VBAでのGoToの活用
以下の例では、特定の条件でExcelのセルの処理をスキップする方法を示します。
Sub ProcessCells()
Dim i As Integer
For i = 1 To 10
If Cells(i, 1).Value = "" Then GoTo SkipCell
Cells(i, 2).Value = Cells(i, 1).Value * 2
SkipCell:
Next i
End Sub
解説:
- セルA列の値が空白なら、B列の処理をスキップする。
GoToの注意事項
- 過度な使用は避ける: コードの流れが分かりにくくなる。
- エラーハンドリングには便利:
On Error GoTo
は一般的に使われる。 - 代替手段を検討する: 可能ならば
If...Else
やExit Sub
を使用する。
よくある質問
- Q: GoTo を多用すると何が問題ですか?
- A: コードの可読性が低下し、デバッグが難しくなります。
- Q: GoTo の代わりに何を使うべきですか?
- A: 条件分岐(
If...Else
)やループ制御(Exit For
、Exit Sub
)を活用するのが推奨されます。 - Q: On Error GoTo は使っても問題ありませんか?
- A: はい。エラーハンドリングではよく使われますが、適切に管理することが重要です。
まとめ
- GoTo はプログラムの制御を特定の位置へジャンプさせる。
- エラーハンドリング(
On Error GoTo
)に便利だが、通常の処理では多用しない方が良い。 - コードの可読性を保つため、可能な限り代替手段(
If...Else
やExit Sub
)を使用する。