【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文はスパゲッティコードの原因になるため使用すべきでない」と言われています。
ですが、以下の理由により多少使用する程度ならば問題無いと私は考えます。

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

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

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

  • 盲目的にGoTo文を敵視する姿勢は、技術者として不適切。
PR

参考②

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

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