非表示にできる< 目次 >
本記事の信頼性
Nakamura(@nkmr_dai)
本記事で分かること
本記事では、以下のことが分かります。
ポイント
DoLoopは大量処理をする上で必須スキルだと思うので、理解を深めてもられば幸いです。
同じループ処理に For Next 構文があります。 続きを見る
こちらについての記事は↓にまとめてますのでご参考にしてください。
【解説付】VBA-For Next の使い方を説明-簡単理解【EXCEL VBA】
Do Loop とは?
条件が合致するまでループ処理を行いたい時に、Do Loopを使用します。
Do Loopが活躍する場面は多岐にあり、EXCELの大量処理で主に使用します。
本記事では説明しませんが、個人的にはEXCEL DOMでWebブラウザを制御するときにも多用します。
Do Loopは非常に便利な構文です。
とりあえず、条件が合致するまでループ処理=Do Loop構文ということを覚えておけばオールOKです。
Do Loopを理解&使い方
Do Loop - 基本構文 + 図で理解
Do Loopの構文を確認しましょう。
※Do until 〜Loop型とDo While 〜 Loop型は本記事では説明しません。(理由:紹介する↓を知れば事足りる)
Do Loop 構文を知ったところで 構造を理解していきましょう。
他のWebサイトでは 構造を理解するのにテキストベースなものが目立っていたため、図を用意しました。
絵にしたほうが理解はしやすいと思いますので、理解の一助になれば幸いです。
Do Loopの構造は図の内容を理解していればOKです。
Do Loopの使用方法
Do Loop until型とDo Loop while型について、
それぞれ使用例を紹介します。
本音を言えば、動作自体に差異はほぼ無いため、
好きな方を使用すれば良いと思います。
個人的にはuntil型が分かりやすいと感じているため、
こちらを使用する頻度が多いです。
Do Loop until型-コード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
Sub Do_Loop_until型の説明() Dim i As Long '変数 i を開始行として扱う Dim c As Long '変数 c をカウンターとして扱う '1行目からスタートの意味 i = 1 Do '★復習★:Cells(行,列)をあらわしている。 'A列が田中だったら If Cells(i, 1).Value = "田中" Then 'B列にかっこいいと入れる Cells(i, 2).Value = "かっこいい" '変数cをカウントアップしていく。 c = c + 1 End If 'iを1つカウントアップさせ行をずらす。 i = i + 1 Loop Until c = 100 '田中を100個カウントするまでループし続ける。 End Sub |
Do Loop while型-コード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
Sub Do_Loop_while型の説明() Dim i As Long '変数 i を開始行として扱う Dim c As Long '変数 c をカウンターとして扱う '1行目からスタートの意味 i = 1 Do '★復習★:Cells(行,列)をあらわしている。 'A列が田中だったら If Cells(i, 1).Value = "田中" Then 'B列にかっこいいと入れる Cells(i, 2).Value = "かっこいい" '変数cをカウントアップしていく。 c = c + 1 End If 'iを1つカウントアップさせ行をずらす。 i = i + 1 Loop while c < 100 ''田中のカウントが100個未満の間はループし続ける。 End Sub |
Do Loop - 注意点(無限ループに注意)
Do Loopは無限ループになる可能性がある危険なコード構文であるので、
こまめに保存しながら EXCELがフリーズした際のコード消滅に備えておきましょう。
※キーボードのesp(escape)ボタンを押下すればVBA実行をキャンセルできますが、
フリーズしてしまったら何も出来ないのでご注意ください。
編集後記
いかがでしたでしょうか。
Do Loop は効率化するにおいて切っても切れない大切な構文です。
EXCEL でIEブラウザを制御する DOM技術においても 多用するものですので、今後のためにも理解しておくと良いと思います。
とりあえず、コードを暗記する必要はありませんので、コピペでも何でも、
使用感を確かめて貰えれば より理解が深まると思いますので積極的に利用していきましょう。
ちょっとだけ宣伝
もしVBA全般のルール・基本知識を身に付けたい方がいらっしゃいましたら、
本ブログでは「1週間で分かるVBA 」 なる記事もご紹介していますので、
一度 覗いてみてくれると幸いです。(当然、無料です。)
本ブログ記事をご覧いただいた皆様のVBAライフが少しでも充実させるものになったのならば、管理人としては結構ハッピーです。
末筆ながら 今後ともどうぞよろしくお願いいたします。