処理を途中でスキップさせたい場合は、GoTo文を使用します。スキップさせる先は同プロシージャ内で指定したラベル先となります。具体的な使い方について説明します。
【目次】
構文
記述方法は、以下の通りとなります。
GoTo文の記述方法
=======================================================================
GoTo[ラベル名]
[ラベル名:]
=======================================================================
[説明]:
処理をスキップさせるには「GoTo[ラベル名]」と記述します。[ラベル名]にはスキップさせる先のラベル名を記述します。[ラベル名:]には上記[ラベル名]からスキップする先を記述します。内容を纏めると、「[ラベル名]が指定された場所から[ラベル名:]で指定した場所まで処理をスキップさせて下さい。」との意味になります。
[記述例]:
GoTo 次データ
使い方
使い方について、具体的に説明していきます。
基本的な使い方
基本的な使い方について説明します。
[画面]:
※<実行>ボタンには、以下の記述例サンプルプロシージャが登録されています。
[記述例]:
※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。
-------------------------------------------------
Sub サンプル()
Select Case Range("A2")
'80以上の場合
Case Is >= 80
GoTo 合格
'60以上80未満の場合
Case Is > 60
GoTo 補欠合格
'上記以外の場合
Case Else
GoTo 不合格
End Select
合格:
MsgBox "合格"
Exit Sub
補欠合格:
MsgBox "補欠合格"
Exit Sub
不合格:
MsgBox "不合格"
Exit Sub
End Sub
-------------------------------------------------
Select文を使用した判定処理となります。内容は「A2セルの値が80以上であれば合格ラベルにスキップして”合格”を、60以上80未満であれば補欠合格ラベルにスキップして”補欠合格”を、60未満であれば不合格ラベルにスキップして”不合格”をMsgBoxで表示して下さい。」との意味になります。
[実行例]:
※A2セルに入力されている数値が65のため、60以上80未満の条件に一致する事から”補欠合格”が表示されました。
基本的な使い方についての説明は以上です。
ループ処理と組み合わせた使い方
ループ処理と組み合わせた使い方について説明します。
[記述例]:
※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。
-------------------------------------------------
Sub サンプル()
'↓処理①
Dim 番号 As Double
'↓処理②
For 番号 = 1 To 5
'↓処理③
If (番号 = 3) Then
GoTo 次データ
Else
MsgBox 番号
End If
次データ:
Next
End Sub
-------------------------------------------------
処理の流れは以下の通りとなります。
[処理①]:変数定義
Dimによる変数の定義となります。
[処理②]:For~Next文によるループ処理
For~Next文を使用して変数:番号に1~5の値を順次セットし、処理を5回実行します。
[処理③]:IF文による条件判断
実行する中で、変数:番号にセットされた値をMsgBoxで表示させます。1回目の処理では変数:番号に1がセットされるため「1」が表示されます。2回目の処理では変数:番号に2がセットされるため「2」が表示されます。3回目の処理では変数:番号に3がセットされますが、IF文での条件一致による次データラベルへのスキップとなるため何も表示されません。4回目の処理では変数:番号に4がセットされるため「4」が表示されます。5回目の処理では変数:番号に5がセットされるため「5」が表示されます。
[実行例]:
ループ処理と組み合わせた使い方についての説明は以上です。
おわりに
GoTo文を多用すると処理がどこに行っているか分からなくなります。できるだけ用途を明確にし、限定して使用するように心掛けて下さい。