BizFAQ-ビズファックBizFAQ-ビズファック仕事・ビジネスにおけるちょっと困ったこと、わからないことをズバリ解決お悩み解決サイトです。GenまずVBAではDo〜Loopで無限ループが実装できます。それに終了条件を追加するのがWhileキーワードです。VBAで純粋な無限ループとして実装することはほとんど無いですが、2重のForを抜けたりするときなど、限られた場面では使用機会があります。悪名高いGoTo文を使用せずDo〜Loopをテクニカルに使用するイメージです。SubVBAのDo〜Loopを使いこなすDo〜Loopを単体で使用することは無限ループを実装することになります。「止まらない」マクロになりますので実装する時は必ず「終了条件」をどこかに追加してください。VBAのマクロが止まらなくなった時は「Esc」キーを連打することでVBAを強制停止できます。1.サンプルコードを書く今回のサンプルは九九のコードを下敷きにします。Forステートメントを使用します。「直近のFor」を抜けることになるので「2個めのFor」を抜けるものとVBAは解釈します。Forだけの場合、とても冗長なコードを書かなければいけません。Sub2回目のForの内部での判定を、外側のForでも引き継いでExitしています。フラグ変数が必要ですし条件判断が増えすぎて冗長です。Forが「どちらの」Forを抜ければいいか判断できないことです。3.Do〜Loopをラベルに前章のようなことが発生した場合GoToメソッドを使うのが簡潔ですが、スパゲッティコードになってしまうことがあります。そのためGoToメソッドを絶対に使わないと決めている人も多いと思います。そんな時Do〜Loopをラベルとして使うことで、コードの可読性を損なわずGoToメソッドのような柔軟性を実現できます。Sub今回はExitする対象がDoになったので、1重目のForも一緒に抜けることになります。実行結果はこうなります。VBAのGoToメソッドは「便利すぎて」濫用することになりかねないため、嫌われているメソッドです。GoToを使わないと2重目でフラグ変数を用意しなければいけないなど冗長性が増す。いう状況の折衷案がこのDo〜Loopです。これまでVBAでGoToを使っていた人は今度からこちらを使ってください。