BizFAQ-ビズファックBizFAQ-ビズファック仕事・ビジネスにおけるちょっと困ったこと、わからないことをズバリ解決お悩み解決サイトです。GenVBAで繰り返しといえばFor文です。Forステートメントメントは明確に繰り返し回数が決まっていないと使用できないため、終了条件を指定して「とりあえず」繰り返し処理をするのがVBAのDo〜Whileステートメントです。Do〜While制御文は使用機会の多いとてもパワフルな制御文です。SubVBAのDo〜Whileを使いこなすVBAのDo〜Loopの終了条件を指定して適当なところで処理を中止するのが、WhileキーワードやUntilキーワードです。VBAの中では馴染みにくい制御文ですが、その分パワフルです。テキストファイル処理ではDo〜While処理がテンプレート化しています。先にの方を見たほうがいいかもしれません。Subこのコードは無限ループします。実際はiがIntegerで宣言されているので32767行目でオーバーフローして停止します。2.前置While構文WhileキーワードをDoの方につけるパターンです。「繰り返し処理に入る前に」終了条件を確認します。ほとんどの場合はこちらで大丈夫です。Sub「100より小さい場合に」繰り返し処理に入ります。繰り返し処理内でiをインクリメントしているので100まで入力されます。3.後置While構文WhileキーワードをLoopの方につけるパターンです。「繰り返し処理の後に」終了条件を確認します。前置While構文と決定的に違うのは「必ず一回実行されることが保証」されます。一度繰り返すかユーザーに確認するときなど、とても便利です。SubMaxIndexは繰り返し処理に入る前に、現在のiより100大きい数になっています。iとMaxindexはInteger宣言されているので、直後は0であることが保証されています。後置While文はFor制御文では完全に不可能な挙動をします。(泥くさく実装は出来ますが)より適した制御文を選べるようになると、VBAを触るのが楽しくなります。VBAにはUntilキーワードも用意されていますがVBA独自ですので、Whileキーワードのみを使用するのが好ましいとされています。