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

VBAには
 ・繰り返し(ループ)処理中にスキップ(continue)する機能
がありません!
※VBAは大昔からある言語、かつ機能追加が行われないため大昔のままです。
※裏を返すと「スキップ(continue)する機能」は、比較的新しい機能ということです。

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

PR

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
PR

実行結果

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

実行結果
実行結果
PR

参考①(Goto文について)

「スキップ(continue)する機能」を含め、大昔のプログラミング言語には以下もありませんでした。
 ・繰り返し処理を強制終了(break文)
 ・エラー処理
※大昔は不便でした。時代が進むにつれてプログラミング言語に新しい制御文が増え、どんどん便利になりました。

そのため大昔のプログラミング言語は、上記と同様の機能を「Goto文で実現」していました。
※Goto文が普通に使用されていました。

しかし現代ではbreak文もエラー処理も存在するため
 ・Goto文を使用するのは良くない
と言われるようになりました。
※大昔のプログラミング言語ではGoto文でしか実現できなかったから、Goto文が使用されていただけです

上記により
 ・Goto文は悪者扱い
されるようになってしまいました。
※Goto文は自由度が高いために、トリッキーなコードになってしまうこともありました。
※「Goto文を使用 = スパゲッティコードだから駄目」と判断する人が増えました。

ただVBAには現在も「スキップ(continue)する機能」が存在しないため、代わりにGoto文で同等の機能を実現するのは適切な判断です。
※だって他のプログラミング言語とは違い、VBAには「スキップ(continue)する機能」が無いんですから。
※Goto文というだけで否定するのは不適切です。

PR

参考②

GoTo文(GoToステートメント)の詳細については、公式サイトをご確認ください。

タイトルとURLをコピーしました