Excel VBA 繰り返し処理のいろいろ

投稿者: | 2020年9月25日
excelアイコン

エクセルバージョン

マイクロソフト365

 

今回はエクセルVBAの繰り返し処理に関していろいろなパターンがあるのでご紹介していきたいと思います。

それではいってみましょう!

For~Next

For 変数 = 開始値 to 終了値 
 処理
Next

A1~A10に連番を入力

参考例:一番左のシートから番号指定でシート名変更

Do Until~Loop

Do until 指定回数まで
 処理
Loop

A1~A10に連番を入力

参考例:ファイルの末尾まで1行ずつ読込みセルに書込む②

Do While~Loop

Do While 指定回数の間
 処理
Loop

A1~A10に連番を入力

参考例:繰り返しと時間設定

While~Wend

While 指定回数の間
 処理
Wend

A1~A10に連番を入力

参考例:ファイルの末尾まで1行ずつ読込みセルに書込む①

Do~Loop Until

Do
 処理
Loop Until 指定回数まで

 

A1~A10に連番を入力

Loopが処理の後に記述してる方式なので必ず処理が1回実行されます。

この必ず1回処理を実行することで使用用途によっては便利に機能する場合があります。

参考例:英単語をランダムに表示させて学習(VBAサンプル)

Do~Loop While

Do
 処理
Loop While 指定回数の間

 

A1~A10に連番を入力

Loopが処理の後に記述してる方式なので必ず処理が1回実行されます。

この必ず1回処理を実行することで使用用途によっては便利に機能する場合があります。

参考例:配列を削除

For Each~Next

For Each エレメント In コレクション(Rangeなど)または配列 
  処理
Next

特徴としては指定した範囲をZ状に処理していきます。

excel繰返し処理(foreach)1

参考例:Webスクレイピング(繰り返し処理(ForEach))

繰り返し処理を途中で抜ける

Exit For

For~NextやFor Eachステートメントを使用する場合

ifを使用して、変数iが5になったらForを抜けるサンプル

結果

デバッグで確認してみると変数iが5でForを抜けてるのが確認できます。

exitFor

参考例:①getElementsByTagName(”タグ名(要素名)“)

Exit Do

Do~Loopステートメントを使用する場合

ifを使用して、変数iが5になったらDoを抜けるサンプル

結果

デバッグで確認してみると変数iが5でDoを抜けてるのが確認できます。

exitdo

繰り返し処理の途中で処理を終了

Exit Sub

ifで変数iが5より大きくなったら処理を終了するサンプル

参考例:指定時間止めてから実行のサンプル

繰り返し処理をスキップ

GoTo

GoToステートメントを使用することでスキップが可能です。

5だけスキップさせたい時の例です。

ifとGoToを上手く利用します。

結果

5だけスキップします\(^^)/

continue

Step

Stepキーワードを使用するとカウンター変数の増減をコントロールできます。

~ずつ増加させる場合

Step 2にすることで、プラス2ずつ増加していきます。

結果

step増加

~ずつ減少させる場合

開始値を終了値よりも大きな値にします。

Step -2にすることで、マイナス2ずつ減少していきます。

結果

step減少

参考例:配列(指定位置に追加)

DoEvents

オペレーティング システム(OS)が他のイベントを処理できるように、実行を渡します。

ループ処理に時間がかかる場合はDoEventsを使用します。

参考例:リアルタイムに座標を表示させる(標準モジュール)

まとめ

繰り返し処理はVBAでは頻繁に使用する必須のものですが、私も書き方をすぐ忘れるので記事にしました。

エクセルにはいろいろなパターンの繰り返し処理がありますので、その場に応じて使い分けていきましょう(^^)

以上です。

Excel目次