【VBA】繰り返し(ループ)処理で疑似的にスキップ(continue)を実現する

残念なことに、
VBAには繰り返し(ループ)処理中にスキップ(continue)する機能が
ありません…。

ですがGoTo文を応用することで、
疑似的にスキップ(continue)を実現することができます!

VBAコード

Sub sample()

    Dim i As Integer
    
    For i = 0 To 10
   
        '2で割って余りが0の場合
        If i Mod 2 = 0 Then
            'スキップする
            GoTo Continue
        End If
        
        'スキップされなかった場合のみ実行
        MsgBox (i & "を2で割った余りは0で無いため、実行しました!")
        
Continue:
    Next i
End Sub

実行結果

2で割った余りが0でない場合のみ、メッセージボックスが表示されました。

備考(GoTo文について)

一般的に「GoTo文はスパゲッティコードの原因になるため使用すべきでない」と言われています。
ですが、以下の理由により多少使用する程度ならば問題無いと私は考えます。

GoTo文の使用について
  • 多少使用した程度では、スパゲッティコードになったりしない

  • 公式でGoTo文は非推奨になっていない

  • 使い方と程度が適切ならば、他の機能と同じく便利な機能の1つ

  • 盲目的にGoTo文を敵視する姿勢は、技術者としてダサい
タイトルとURLをコピーしました