【VBA】Do Loopを徹底解説!繰り返し処理の基本スキル!

f:id:yshgs_elec:20201002224617j:plain

「VBAの繰り返し処理についてもっと勉強したい!」

この記事は、こんな人のためのものです。

 

これからVBAを勉強する人に向けて、初心者によりそった解説をしていきますので、ぜひ最後までごらんください。

 

それではさっそくやっていきます!

 

スポンサーリンク

はじめに

繰り返し処理はVBAに限らず、プログラミングにおける基本中の基本です。

 

どんなに複雑そうな処理コードだとしても、やっていることは、シンプルな繰り返し処理を連続して行っているだけだったりします。

 

逆に言えば、この繰り返し処理をしっかりとマスターできていれば、難しい処理も簡単に記述できるようになるはずです。

 

VBAで繰り返し処理を行う方法はいくつかありますが、この記事では、【Do Loop】という繰り返し処理方法について説明していきます。

 

ぜひ一緒にエクセルを開き、スキルをマスターしていきましょう。

スポンサーリンク

【Do Loop】の使い方説明

基本的な使い方は以下の4パターンです。

パターン①

Do Until 【条件式】
実行したい処理
変数の処理
Loop

 

パターン②

Do
実行したい処理

変数の処理

Loop Until  【条件式】

 

パターン③

Do While 【条件式】
実行したい処理

変数の処理

Loop

 

パターン④

Do
実行したい処理

変数の処理

Loop While  【条件式】

基本形はこんな感じです。

※ここでいう【実行したい処理】と【変数の処理】は入れ替わっいても問題ありません。

 

また、仮にDoとLoopの間の処理の中で条件式を満たしたとしても、次のLoop が開始するまでは処理が止まることはありません

 

とはいえ、この説明だけではよくわからないと思いますので、実際の使用例を見ていきましょう。

 

スポンサーリンク

【Do Loop】の実際の使用例

ここからはDo Loopの実際の使用例を画像付きで説明していきます。

 

さきほど紹介した4つのパターンに分けて説明していきますので、ぜひ違いを理解しておきましょう。

 

今回はA列のセルに順番に文字を入れていくという処理を行います。

 

非常にシンプルな処理ですが、一つのセルに文字を入力するという作業を、何度も繰り返すことで処理を実行していくようにしています。

 

この処理をしっかりと理解できれば、この記事のテーマである繰り返し処理についてマスターすることはできるでしょう。

それでは実際の使用例に移っていきます。

 

パターン①Do Until ~ Loop

まずはパターン①です。

Sub Do_Loop1()
    Dim i As Integer
    i = 1
    Do Until i > 10
        Cells(i, 1) = "test" & i
        i = i + 1
    Loop
End Sub

 

このコードの実行結果は以下のようになります。

DoLoopを使ったサンプルコードを実行した結果

処理の流れとしては、

①まずは i が何なのかを始めに宣言する(ここでは 1 )

② i が1なので10よりも小さいため、Doの処理が開始される

(iが10よりも大きくなるまで繰り返せ!という処理なので)

③Aセルに test + i という文字を入力する

④このまま繰り返すと永遠に同じしょりなので、i の値を変更する

⑤Do の処理判定に戻る

⑥i が10 よりも大きくなるまで②から⑤までを繰り返す。

⑦ i = i +1 で i=11となった場合、i>10の判定を満たすので、処理が停止します。

※untilという文字は英語でまさしく【~まで】を意味した言葉です。

使われる文字の意味をしっかりと理解しておけば、プログラミングでの処理内容についても自然と理解できるはずです。

 

また、先ほど紹介したDo Loop の使い方と、今回のコードを見比べてみましょう。

〇Do Loop の使い方

Do Until 【条件式】
実行したい処理
変数の処理
Loop

 

〇実際のコードの一部

Do until i > 10

Cells(i, 1) = “test” & i
i = i + 1

Loop

 

全く同じ形で記述されていることがわかると思います。

このコードでは i>10 の部分が【条件式】です。

また、 i=i+1 の部分が【変数の処理】です。

上の使い方とまったく同じ流れで記載されていることがわかりますね。

※【実行したい処理】に含まれているcells(*,*)の意味がわからないという人は以下の記事を参考にしてください。

www.higashisalary.com

 

実際の業務に適用していく場合、条件式や変数の処理をあなたがやりたい処理に合わせて書き換えていくだけです。

なんとなくできる気がしてきたのではないでしょうか?

 

というわけで、Do Loop処理の使い方を理解いただけたのではないでしょうか。

 

基本的な考え方がわかったところで、ここからは他のパターンでの使用例をご紹介していきます。

 

パターン②Do ~ Loop Until

つぎは2つ目のパターンです。

 

さきほどはDo のすぐ後ろに条件式が入っていましたが、この条件式は Loopの直後に持っていくことが出来ます。

 

基本的には同じ処理がなされますので、あまり複雑なことをしないのであればどちらのパターンでも問題ありません。

実際の使用例を示しておきます。

Sub Do_Loop2()
    Dim i As Integer
    i = 1
    Do
        Cells(i, 1) = "test" & i
        i = i + 1
    Loop Until i > 10
End Sub

このコードでも先ほどと全く同じ実行結果となります。

DoLoopを使用したサンプルコードの実行結果

 

ここまで紹介した2つのパターンはuntilを使った処理であり、条件式がこうなるまで繰り返せ!という処理でした。

 

パターン③Do While ~ Loop

先ほどではuntil【~まで】を使った処理をご紹介しました。

次はwhile【~の間は】という処理について説明します

早速ですが、実際の使用例をご紹介します。

Sub Do_Loop3()
    Dim i As Integer
    i = 1
    Do While i < 10
        Cells(i, 1) = "test" & i
        i = i + 1
    Loop
End Sub

先ほどのuntilを使った処理では条件式の部分は

i>10となっており、iが10よりも大きくなるまで、という処理になっていました。

 

一方、ここで紹介するwhileを使った処理では

i<10となっており、iが10よりも小さいは、という処理になっています。

 

また、実際の実行結果は以下のようになります。

DoLoopを使用したサンプルコードの実行結果

先ほどと違い、A9セルまでで処理が止まっていることがわかります。

 

この理由としては、i=10では、i<10の条件式を満たさないため、i=10の処理は実行されないというわけです。

 

whileを使った場合についても理解いただけたでしょうか?

 

パターン④Do ~ Loop While

最後に4つ目のパターンについてです。

ここも最初のuntilの場合と同じで、条件式は最後に持っていくことが可能です。

実際の使用例を以下に示します。

Sub Do_Loop4()
    Dim i As Integer
    i = 1
    Do
        Cells(i, 1) = "test" & i
        i = i + 1
    Loop While i < 10
End Sub

この場合の実行結果も先ほどと同じでA9セルまで実行されます。

DoLoopを使用したサンプルコードの実行結果

このwhileを使う場合でも、基本的には同じ処理がなされますので、あまりに複雑な処理をしない限りは使いやすい方を使っていただいて問題ありません。

 

スポンサーリンク

おわりに

というわけで、今回は繰り返し処理の基本的あるDo Loop処理の使い方についてご紹介しました。

 

このブログでは様々なVBA処理コードを紹介していますが、その中でもDo Loopは特に登場頻度が高いものです。

 

この処理についてもっと勉強したいという方はぜひ他の記事も読んでみてください。

過去記事一覧

このように、このブログでは、エクセル(VBA)を中心に、様々な業務効率化スキルを紹介しています。

■業務の生産性を上げたい。

■早く帰って子供と遊びたい。

こんな人はぜひ他の記事も読んでみてください。

また、VBAを使ってこんなことがしたいんだけど、やり方がわからない、という悩みを抱えているかたは、お気軽にコメント欄から質問してください。

私にわかる範囲であればご協力いたしますので。(もちろん無料です。)

 

最後に・・・

このブログを応援してあげても良いよ、という方は以下のボタンをポチっていただけると嬉しいです。

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

Twitterもやっていますので、興味があれば覗いてみてください。

それではまた!!

コメント

  1. 謎解き作成中 より:

    コメント失礼します。

    Inputboxでもし、○○と入力したらページ1に□□と入力したらページ2に飛ぶ

    っていうものって作れますか?

    • ヒガシ ヒガシ より:

      返信が遅れてしまい申し訳ありません。
      はい、可能ですよ(^^)
      aaa=inputbox
      IF aaa=”○ ○” then
      sheets(1).activate
      みたいな感じでできると思います。

  2. 謎解き作成中 より:

    ありがとうございます!
    早速試してみます!

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