ループを終了し次のループに移る
VBAでループを終了し次のループに移るコードを紹介します。
概要
VBAでループを終了し次のループに移る場合、Visual Basicでは Continue For文が利用できますが、VBAはVisual Basic 2.0 のContinue文がまだなかった頃がもとになっているため、Continue文は利用できません。VBAで Continue文と同様の処理を実現する場合はGoto文を利用します。
プログラム例
Excelでシートにボタンを設置します。
コード
ボタンクリック時に実行されるマクロに下記のコードを記述します。
Sub Button1_Click()
For i = 1 To 10
Cells(i, 5).Value = "項目" & i
If (i Mod 2 = 1) Then
Cells(i, 6).Value = "奇数"
GoTo LoopLast
End If
If i>=7 Then
Cells(i, 7).Value = "PP"
End If
LoopLast:
Next
End Sub
解説
Forループで10回ループします。ループで1行目から10行目までの5列目のセルに「項目n」(nはループカウンタ番号)の文字列を表示します。この時、項目の番号が奇数であれば6列目に「奇数」の文字列を表示し、次のループに移ります。奇数でない場合はループカウンタがⅦ以上であれば、7列目に「PP」の文字列を表示します。
Continue文が使える場合、Goto LoopLast の部分にContinue文を記述すればよいですが、Continue文が無いため、Goto文でループの最後にジャンプします。Goto文のラベル LoopLast はループの最後に設置します。
実行結果
Excelシートでボタンをクリックします。項目1~項目10の文字列が表示され、奇数の要素はF列のセルに「奇数」の文字が表示されます。奇数でなく項目7以上であればG列のセルに「PP」の文字が表示されます。
著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。