※本ブログのページには広告主との提携による広告や宣伝、プロモーションが含まれます。当ブログを経由しての商品の購入や、サービス申し込みが発生すると、それらの提携企業からの成果報酬を受けとる場合があります。

エクセルVBA|For nextやDo Loopで繰り返し処理マクロをつくる

Excel VBAをつかって実務を効率的にすすめるマクロを作りたい。その上で欠かせないのが、繰り返し処理です。繰り返し処理は、データを大量にあつかう処理や、何百回、何千回、何万回と同じ作業をする場面においてなどに真価を発揮します。

繰り返しが必要な作業は身の回りにたくさんあります。
例えば、毎月●日に会議がある予定をカレンダーに書きこむことや、継続しているサービスや商品販売における請求書を発行することなど、職場によってはこれらの作業を事務スタッフとして働く人が期限に追われながら処理している可能性もあります。

しかし、こういったある程度の型が決まった作業は、一度マクロを作ってしまえば劇的に負担を減らすことができます。ただし、繰り返し処理をするマクロ作るには、VBAでFor Nextや、Do Loopなどの繰り返し文の使いかたを理解することが重要です。

本記事では、VBAの繰り返し処理について基礎から解説し、実際のコード例を交えながらマクロのつくりかたをわかりやすく紹介します。

なお、繰り返し処理の内、以前の文字入力を制限する方法として紹介した記事でも触れたDo While文Do Until文については重なる部分はありますが、以前の記事では、使用用途を限定した紹介であったため、こちらでは繰り返し処理文の基本的な書き方を用いて紹介しています。

独学だと中々スキルが身についた実感が湧かない。学習環境を見直してみませんか?

エクセルで繰り返しや転記作業で苦しい思いをした経験はありませんか?
今まで苦労してきたその作業を簡単なプログラムをおぼえるだけで解決できる可能性があります。
なるべくお金や時間をかけずにエクセルマクロVBAを習得したい人にはこちらの「1日速習講座」がおすすめです。

Contents

【結論】繰り返し処理はFor Next文またはDo Loop文をつかう

エクセルVBAで繰り返し処理をするマクロを作るために必要なステートメントは4つあります。

それぞれの特徴は以下のとおりです。

For Nextステートメント

For Nextの特徴

VBAで繰り返しと言えば、ForNextステートメントと言えるくらいよく使われる。

For Eachステートメント

For Eachの特徴

シートなどのオブジェクトに対する繰り返し処理に使いやすい。

Do Whileステートメント

Do Whileの特徴

条件が満たされている間は繰り返すといった状況で使う。

Do Untilステートメント

Do Untilの特徴

条件が満たされない間は繰り返すといった状況で使う。

次項より、VBAの繰り返し文の基本的な説明とそれぞれの書きかたについて詳しくみていきます。

独学でプログラミングをはじめてみたけど、このままの学習方法に不安を感じているのなら、
オンラインスクールで現役エンジニアのサポートがあるテックアカデミーがおすすめ。
スキマ時間に学べて仕事も保証。必ず副業、始められます。まずは無料でプログラミング体験

エクセルVBAにおけるFor Next文やDo Loop文の繰り返し処理マクロ

本記事の概要

この記事では、エクセルVBAで繰り返し処理を実行するマクロのつくりかたを紹介します。
VBAには、For Nextステートメント、For Eachステートメント、Do Whileステートメント、Do Untilステートメントなど、複数の繰り返し処理の書きかたが用意されています。

それぞれのステートメントの特徴や使い方を詳しく解説し、実際のコード例を交えて具体的な使い方を紹介します。
また、繰り返し処理のネストや、ループ内での条件分岐など、より複雑な処理の実現方法についても触れます。この記事を読むことで、VBAで繰り返し処理を実行する方法を理解し、効率的なプログラミングを行うことができます

ここでは、コンピュータープログラムの繰り返し処理を構成するための手続きや命令における文やブロックを、ステートメントと表現していますが、これはプログラミングという分野の学習を進める上で必ず出会う単語であり、恐らく本ブログを訪れた人は、他のウェブサイトを閲覧する機会があることを想定した表現としています。横文字表現が苦手な人も、表現を難しくとらえずに単なる作法(書きかた)と理解してもらえれば幸いです。

VBAにおける繰り返し(ループ)処理についての基礎知識

繰り返し処理とは、同じ操作や条件にしたがった操作を何度も繰り返して実行することです。
Excel VBAでは、ループ処理を使って繰り返し処理を実装できます。

ループ処理をするマクロを書く方法としては、大きく分けて以下の2つとなります。

  • For Next ステートメント
    指定回数や、あるかたまりの個数に応じた繰り返し回数である場合につかう
    例:10回繰り返す / シート数分繰り返す など。
  • Do Loop ステートメント
    特定の条件の間や、特定の条件までといった、条件に応じた繰り返しにつかう
    例:変数が10以上になるまで繰り返す / セルの値が空白になるまで繰り返す など。

Forの繰り返しは『回数指定』、Doでの繰り返しは『条件指定』とおぼえてね。

For Nextステートメントの構文とサンプルコード

For Nextステートメントは、指定した回数だけ同じ処理を繰り返します。For Nextステートメントは、次のような構文を持ちます。

For Nextステートメントの構文

For 変数 = 初期値 To 終了値 Step 増分
  処理
Next 変数

ForからNextの間に繰り返し実行する処理を書くよ。

For Nextステートメントのサンプルマクロ

以下のサンプルコードでは、イミディエイトウィンドウに1から10の数値を表示します。

サンプルマクロ

Option Explicit

Sub sample()

Dim i As Long

For i = 1 To 10
    Debug.Print i'イミディエイトウィンドウに1~10を表示する
Next i

End Sub

以下のサンプルコードでは、シート1の(A1)セルから(I9)セルの範囲に九九の表を作成します。

サンプルマクロ2

Option Explicit

Sub 繰り返しで九九を計算する()

Dim i As Long, j As Long '繰り返し用の変数を宣言する

    For i = 1 To 9 'For Next文で変数 i が1~9まで繰り返す
        For j = 1 To 9 'For Next文で変数 j が1~9まで繰り返す
            ThisWorkbook.Sheets(1).Cells(i, j) = i * j 'i * jで掛け算の結果をセルに入力する
        Next j
    Next i

End Sub

上記のサンプルマクロでは、For Next文の内側にFor Next文を書いてネスト(入れ子)しています。
これによって、外側のFor文で使用している変数 i が1の間に変数 j は1~9と変わっていき、最も内側に書かれたセルに値を書きこむ処理が繰り返されます。

また、変数 i と変数 j は値を書きこむセルの位置の役割もしているため、具体的には以下のように処理が進みます。

  • 外側のFor Next文で変数iに1が代入されているときの処理
    • 変数jの1巡目では、jは1となるため、セル1行目・1列目に1×1の値を書きこむ。
    • 変数jの2巡目では、jは2となるため、セル1行目・2列目に1×2の値を書きこむ。
    • 変数jの3巡目では、jは3となるため、セル1行目・3列目に1×3の値を書きこむ。
    • 変数jの4巡目では、jは4となるため、セル1行目・4列目に1×4の値を書きこむ。
    • 変数jの5巡目では、jは5となるため、セル1行目・5列目に1×5の値を書きこむ。
    • 変数jの6巡目では、jは6となるため、セル1行目・6列目に1×6の値を書きこむ。
    • 変数jの7巡目では、jは7となるため、セル1行目・7列目に1×7の値を書きこむ。
    • 変数jの8巡目では、jは8となるため、セル1行目・8列目に1×8の値を書きこむ。
    • 変数jの9巡目では、jは9となるため、セル1行目・9列目に1×9の値を書きこむ。
  • 変数iの2巡目が開始され、変数iに2が代入されているときの処理
    • 変数jの1巡目では、jは1となるため、セル2行目・1列目に2×1の値を書きこむ。

…変数 i が9のときまでつづく

実行結果
ForNextステートメントで九九の表を作成するマクロ実行結果画像

9行・9(I)列のセル範囲に九九の表を作成したよ。

話題のChatGPTでもプログラミングができることを知っていますか。

メッセージを入力するだけで、プログラミングコードを返してくれるから、VBAを学ぶツールとしても活用できます。ChatGPTをつかってマクロの作成を検証した記事は以下から読むことができます。

上記リンクをクリックすると移動します。

For Eachステートメントの構文とサンプルコード

VBAのFor Eachステートメントは、配列やコレクションなどの要素を反復処理するために使用されます。For Eachステートメントは、次のような構文を持ちます。

For Eachステートメントの構文

For Each 要素 In コレクション
  処理
Next 要素

コレクションがオブジェクトなら要素はオブジェクト型の変数で宣言、配列であればバリアント型の変数で宣言することに注意が必要です。

サンプルマクロ

Option Explicit

Sub sample()

    Dim arr() As Variant'バリアント型で宣言する
    arr = Array(1, 2, 3, 4, 5)'Array関数で配列を作成し、arrに代入する
    
    Dim num As Variant
    For Each num In arr'配列の要素数分繰り返す
        MsgBox num'メッセージボックスで1~5を表示する
    Next num

End Sub

For Eachステートメントは、かたまりや集合体のすべてに対して一つずつ取り出して処理をします。サンプルマクロでは、Array関数を使って変数 arr に対して[1・2・3・4・5]が代入されています。

Array関数は、Variant型で宣言された変数にカンマ区切りで複数の値を代入することができる関数です。

つまり、変数 arr は[1・2・3・4・5]の数値の要素を持ったかたまり・集合体となっています。
そして本題のFor Eachステートメントを使って、変数 arr の要素を変数 num に一つずつ取り出し、すべての要素に対して処理を実行します。

サンプルマクロでは、For Eachステートメント内の処理はメッセージボックスに変数 num に代入された数値を表示します。

実行結果
For Eachステートメントをつかったマクロの実行結果1
実行結果
For Eachステートメントをつかったマクロの実行結果2

メッセージボックスに1~5の数字が表示できたね。

Do Whileステートメントの構文とサンプルコード

Do Whileステートメントは、条件がTrueの間だけ同じ処理を繰り返します。以下のように書きます。

Do Whileステートメントの構文

Do While 条件式
  処理
Loop

サンプルマクロ

Option Explicit

Sub sample()

Dim i As Long
i = 1

Do While i <= 5
    Debug.Print i'イミディエイトウィンドウに1~5を表示する
    i = i + 1
Loop

End Sub

Do LoopステートメントはFor Nextステートメントと異なり、回数を指定するのではなく条件を指定します。For Nextステートメントで、変数 i が1~5の時に処理を繰り返すマクロと同等にする場合は、Do Loopステートメントでは以下のように書くことができます。

Do While i <= 5

なお、Do Loopステートメントには、WhileとUntilがあるので、それぞれに合わせて条件を指定します。
Whileは条件判定がTrueであれば繰り返しを継続するため、変数 i が5以下の間であれば処理を繰り返します。

Do Loopステートメントを使うときの注意点としては、変数の値である数値を更新することです。
サンプルマクロの場合「 i = i + 1」がそれに当たりますが、これを書き忘れると変数 i は1のままとなり、無限ループが発生します。

Do Untilステートメントの構文とサンプルコード

Do Untilステートメントは、条件がFalseの間だけ同じ処理を繰り返します。以下のように書きます。

Do Untilステートメントの構文

Do Until 条件式
  処理
Loop

サンプルマクロ

Option Explicit

Sub sample()

    Dim i As Long
    i = 1
    
    Do Until i > 5
        Debug.Print i'イミディエイトウィンドウに1~5を表示する
        i = i + 1
    Loop

End Sub

Do LoopステートメントはFor Nextと異なり、回数を指定するのではなく条件を指定します。
For Nextステートメントで、変数 i が1~5の時に処理を繰り返すマクロと同等にする場合は、Do Loopステートメントでは以下のように書くことができます。

Do Until i > 5

なお、Do Loopステートメントには、WhileとUntilがあるので、それぞれに合わせて条件を指定します。
Untilは条件判定がFalseであれば、繰り返しを継続するため、変数 i が5以下の間であれば処理を繰り返します。

Do Loopステートメントを使うときの注意点としては、変数の値である数値を更新することです。
サンプルマクロの場合「 i = i + 1」がそれに当たりますが、これを書き忘れると変数 i は1のままとなり、無限ループが発生します。

繰り返し構文の書きかたとサンプルマクロのまとめ

For Next、For Each、Do Loopなどの特性を理解して、適切なステートメント使うことで正確な分量の処理が実行できるようになります。

例えば、エクセルシートの表に対して、何かの処理をするマクロを作成するにあたり、処理回数は”最終行まで繰り返す”のか、または”空白行になるまで繰り返す”のかでも、For文をつかう人もいれば、Do Loop文で書く人もいます。

どちらが正しいということはないですが、関連書籍やインターネット上の記事・YouTubeの動画を参考にすると、それぞれの特徴から最終行まで繰り返す場合はFor文が多い。一方、空白行になるまでの場合はDo Loop文を使っているものを多く見かけます。

いずれにしても、For文で条件判定をしたいのであれば、If文などの条件判定と組み合わせをすること。Do Loop文で回数の指定をしたいのであれば、不等号のつけかたや変数の更新を書きわすれないことなどの注意点をおさえておくことが大切です。

ExcelVBAで繰り返し処理を行うことの重要性

Excel VBAで繰り返し処理を行うことは、プログラムの効率性を高めるために非常に重要です。

例えば、同じような処理を何度も行う場合、繰り返し処理を使えばコードを簡潔にまとめることができます。また、大量のデータを扱う場合には、繰り返し処理を使用することで、手動で1つずつ処理を行うよりも効率的にデータを処理できます。

さらに、繰り返し処理を使えば、複雑な処理も実現できます。Excel VBAでは、繰り返し処理の中で条件分岐ができます。これにより、複雑な条件に応じて、処理の流れの制御ができます。

繰り返し処理を使うことで、プログラムの作成時間やメモリ使用量を削減できます。より効率的なコードを書くことができれば、プログラムの実行速度も向上し、大規模な処理でも高速に処理ができます。

繰り返しと条件分岐が使えると、ほとんどの処理はプログラムでできるよ。

ExcelVBAにおける繰り返し処理の種類とそれぞれの使いどころ

繰り返し(ループ)処理の種類について

既に紹介していますが、繰り返し(ループ)処理の書き方については、以下の4種類があります。
それぞれの特徴については、本記事の冒頭で紹介しましたのでこちらでは最低限のみで記載します。

ステートメントの種類 特徴(概要)
For Nextステートメント 繰り返す回数を指定することができる
For Eachステートメント オブジェクトや配列を網羅的に処理することができる
Do Whileステートメント 条件判定でTrueの間は繰り返すことができる
Do Untilステートメント 条件判定でFalseの間は繰り返すことができる

For Nextステートメントのつかいどころ

For Nextステートメントは、処理を繰り返す回数が事前に分かっている場合に有効です。例えば5回繰り返したい、10行分だけ繰り返したいなど具体的な回数を指定する場合に使います。

また、エクセルワークシート上の表の処理では、行数分や、列数分を繰りかえすといったコードをよく使います。これらをうまく使うためには、表の最終行や、最終列数値で取得し、For Next文の指定回数として利用します。

ワークシート上に書かれた表の最終行や、最終列の取得方法については、別の記事で紹介しているため、ここでは詳しく紹介しませんが、詳しく知りたい人は以下の記事をご覧ください。

表の最終行や最終列を取得して、繰り返し文に利用する方法は以下の記事でくわしく解説しています。

For Eachステートメントのつかいどころ

For Eachステートメントは、配列やオブジェクトなどに対して全ての要素に対して繰り返し処理するときに便利です。例えばエクセルを新規作成時、ワークシートの数は1つだけですが、複数のワークシート分の処理が必要な場合や、特定のワークシートのセル範囲を網羅的に処理したい場合につかえます。

コレクション(複数の集合体)から、1つずつ取り出して順番に処理を繰り返していくようなイメージをすると分かりやすいかもしれません。

For eachステートメントの繰り返し(ループ)処理のイメージ
ForEachステートメントで繰り返し処理を実行した際のイメージ画像

かたまりや集合体から一つずつ取り出すイメージだね。

Do Whileステートメントのつかいどころ

Do Whileステートメントは条件式を指定して、この式に一致している間は処理を繰り返します。

使いどころとして、繰り返し(ループ)の実行回数が不明な場合に使います。
具体的に言えば、ユーザーに入力ボックスを表示して、許容されない文字が入力されている間は処理を繰り返す。他にも、表の各行に対して処理を繰り返すマクロでは、セルに入力されている値が空欄でない間は繰り返す。など、実行するタイミングや、状況で条件を判定しながら繰り返す回数に対応した処理が可能です。

Do Untilステートメントのつかいどころ

Do Untilステートメントは条件式を指定して、この式に一致するまでの間は処理を繰り返します。

UntilとWhileは逆説の条件ですが、こちらもWhileと同じく繰り返し(ループ)の実行回数が不明な場合に使います。

例えば、ある変数の値が10になるまで処理を繰り返す。他にも、表の各行に対して処理を繰り返すマクロでは、セルに入力されている値が空欄になるまで繰り返す。など、実行するタイミングや、状況で条件を判定しながら繰り返す回数に対応した処理が可能です。

残業はしたくない!PCやExcelのスキルアップであなたのプライベート時間を奪わせない!
実務をプロから学べる「ユースフル」の動画は永年見放題。Q&A機能で分からないを放置しないから安心。


詳しくは以下のリンクをクリック

ExcelVBAでそれぞれの繰り返し文による実装方法

ExcelVBAで繰り返し処理を実装方法について

ここでは、それぞれの繰り返し文の実装方法を紹介していきます。

サンプルコードでは、内容を理解しやすくするために、For Nextステートメント、For Eachステートメント、Do Whileステートメント、Do Untilステートメントの4種類で同じ実行結果(イミディエイトウィンドウに1から10の数値の出力)となるコードを書いています。

実行結果は同じなので、先に実行結果をお見せした上で、それぞれのステートメントをつかったコードを紹介していきます。

実行結果

1
2
3
4
5
6
7
8
9
10

イミディエイトウィンドウに数字の1から10までを表示するマクロだよ。

それでは、このマクロをそれぞれの繰り返し文で書き比べてみていきます。

For Nextステートメントの実装方法

Option Explicit

Sub ForNextステートメント()

'カウンタ変数を宣言する
Dim count As Integer

'For Nextステートメントで変数countは1から10まで繰り返す
For count = 1 To 10
    Debug.Print (count) '繰り返す処理を記述する
Next count

End Sub

変数[count]が1のときから10まで繰り返す。数値で回数を指定しているところがポイントです。

For Eachステートメントの実装方法

For Eachをつかったくり返し処理のサンプルマクロ

Option Explicit

Sub ForEachステートメント()

'配列の宣言と初期化
Dim myArray As Variant

'配列にArray関数つかって1から10の数値を代入する
myArray = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

'要素を代入する変数itemを宣言する(バリアント型)
Dim item As Variant

'For Eachステートメントをつかって配列内の要素数分の処理を繰り返す
For Each item In myArray
    Debug.Print item '繰り返す処理を記述する
Next item

End Sub

配列[myArray]の要素数の数だけ繰り返すところがポイントです。

Do Whileステートメントの実装方法

Do Whileをつかったくり返し処理のサンプルマクロ

Option Explicit

Sub DoWhileステートメント()

'カウンタ変数を宣言し、1を代入する
Dim count As Integer: count = 1

'Do Whileステートメントをつかってcountが10になるまでの間繰り返す
Do While count <= 10
    Debug.Print (count) '繰り返す処理を記述する
    count = count + 1 '変数countに1を足す(※書かないと無限ループします)
Loop

End Sub
Whileステートメントは、条件式がTrueの間、Loopで囲まれた部分の処理が繰り返し実行します。条件式がFalseになった時点で繰り返し処理が終了します。

条件式で、変数[count]が10以下の条件である間は繰り返すといった指定方法がポイントです。

Do Untilステートメントの実装方法

Do Untilをつかったくり返し処理のサンプルマクロ

Option Explicit

Sub DoUntilステートメント()

'カウンタ変数を宣言し、1を代入する
Dim count As Integer: count = 1

'Do Untilステートメントをつかってcountが10になるまで繰り返す
Do Until count > 10
    Debug.Print (count) '繰り返す処理を記述する
    count = count + 1 '変数countに1を足す(※書かないと無限ループします)
Loop

End Sub
Untilステートメントは、条件式がFalseの間、Loopで囲まれた部分の処理が繰り返し実行します。条件式がTrueになった時点で繰り返し処理が終了します。

条件式で、変数[count]が10よりも大きくなるまでは繰り返すといった指定方法がポイントです。

繰り返し(ループ)処理のコードの制御構文の比較

ここでは、前項で紹介した繰り返し処理のステートメントの制御構文を比較していきます。

For Nexrステートメントを使ったマクロのコード

Option Explicit

Sub ForNextステートメント()

'カウンタ変数を宣言する
Dim count As Integer

'For Nextステートメントで変数countは1から10まで繰り返す
For count = 1 To 10
    Debug.Print (count) '繰り返す処理を記述する
Next count

End Sub

For Eachステートメントを使ったマクロのコード

Option Explicit

Sub ForEachステートメント()

'配列の宣言と初期化
Dim myArray As Variant

'配列にArray関数つかって1から10の数値を代入する
myArray = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

'要素を代入する変数itemを宣言する(バリアント型)
Dim item As Variant

'For Eachステートメントをつかって配列内の要素分の回数繰り返す
For Each item In myArray
    Debug.Print item '繰り返す処理を記述する
Next item

End Sub

For NextとFor Eachステートメントの比較で注目しておきたい点は、宣言する変数のデータ型です。
※変数のデータ型については、こちらの記事で紹介しています。

For Nextは繰り返す回数を指定できるステートメントなので、宣言した変数 count は整数型に指定し、数値の1~10が処理の度に1ずつカウントしていきます。

なお、この場合は別途 count = 1 の変数に値を代入するコードは不要です。かわりにFor count = 1 To 10 のコードが変数 count に1~10を代入しています。
もっと言えば、For Nextよりも前に変数 count に値の代入をしていても、繰り返し処理の中では、変数 count は1~10の値に書き変わってしまう点はおぼえておきましょう。

For Nextステートメントの末尾にある Next count の部分で変数 count に代入された数値に1が加算されます。For Nextでは、ループごとにステップする数の指定もできます。Stepを指定した場合は、加算される指定した数値に応じて加算されます。

一方、For Eachステートメントでは、繰り返す回数を指定するのではなく、集合体となる配列やオブジェクトの要素の数だけ繰り返します。
ここでは、バリアント型の変数 myArrayを配列として宣言し、Array関数で1~10の数値を代入しています。これにより、10コの要素(数値)の集合体となった myArray に対する繰り返す回数は10回になります。

そして、For eachステートメントでは、取り出した要素を代入するための変数をつかいます。サンプルコードでは、itemという名前の変数を宣言していますが、要素を代入する変数はバリアント(Variant)型でなければエラーが生じる点には注意が必要です。

※集合体がオブジェクトなら、object型でも実行が可能です。例えば、セル範囲を集合体として、一つのセルを要素として全セル分繰り返し処理をするのであれば、宣言する変数は、object(Range)型でも実行が可能です。
集合体や、要素のデータ型について分かっているのであればそれに合わせた型を利用できますが、データ型についての理解が不安であれば、バリアント型を利用しましょう。

For Eachはブドウを一粒ずつ取って何かを処理するといった感じだね。

Do Whileステートメントを使ったマクロのコード

Option Explicit

Sub DoWhileステートメント()

'カウンタ変数を宣言し、1を代入する
Dim count As Integer: count = 1

'Do Whileステートメントをつかってcountが10になるまでの間繰り返す
Do While count <= 10
    Debug.Print (count) '繰り返す処理を記述する
    count = count + 1 '変数countに1を足す(※書かないと無限ループします)
Loop

End Sub

Do Untilステートメントを使ったマクロのコード

Option Explicit

Sub DoWhileステートメント()

'カウンタ変数を宣言し、1を代入する
Dim count As Integer: count = 1

'Do Whileステートメントをつかってcountが10になるまでの間繰り返す
Do While count <= 10
    Debug.Print (count) '繰り返す処理を記述する
    count = count + 1 '変数countに1を足す(※書かないと無限ループします)
Loop

End Sub

Do WhileとDo Untilステートメントでは、Forステートメントのように回数や集合体の要素数分を繰り返すのではなく、条件を指定します。
Whileは、条件判定の結果がTrueの間は処理を継続し、判定結果がFalseになった時点で終了します。一方でUntilでは、条件判定がFalseの間は処理を継続。Tureになったら終了します。

サンプルコードのコメントでも分かるとおり、Do WhileやUntilステートメントでは、Forステートメントのように末尾にNextがないので、無限ループを回避するための対策として、繰り返しのたびに変数 count に+1の処理を実行しています。

繰り返し(ループ)変数の使い方や変数のスコープについて

ここまでで、VBAで繰り返し処理を行う場合、For NextステートメントやDo Loopステートメントを使用することが一般的であることは理解できたかと思います。

これらのステートメントでは、繰り返し(ループ)変数を使用する手段が多くつかわれます。繰り返し(ループ)変数とは、繰り返しの処理内で変化する変数ですが、ここでは繰り返し(ループ)変数のつかいかたのポイントと変数のスコープについて説明します。

繰り返し(ループ)変数のつかいかたのポイント

繰り返し(ループ)変数を使用する場合、最初に変数の初期値を設定する必要があります。初期値を設定しない場合、繰り返しが正しく動作しない可能性があります。

繰り返し(ループ)内で、繰り返し(ループ)変数の値を更新することが必要です。更新しない場合、繰り返し(ループ)が正しく動作しない可能性があります。For Nextステートメントでは、繰り返し文の中で更新されていきますが、Do Loopステートメントでは、繰り返し用に利用する変数を更新する処理を忘れないようにしましょう。

繰り返し(ループ)内で、繰り返し(ループ)変数の値を使用することができます。例えば、繰り返し(ループ)変数の値に応じて処理を分岐したり、処理をするセルのアドレスを指定するときに使うなどの様々な用途があります。

変数のスコープ(適用範囲)について

変数のスコープとは、変数の適用範囲のことです。

ここではVBAにおける変数の適用範囲(スコープ)について紹介します。スコープについて詳しく説明するためには、VBAにおけるモジュールやプロシージャなどの単位・範囲の事前説明が必要だと考えているため、以下の記事で詳しい内容を解説していますので、
以下のリンクより記事をご覧ください。

モジュールの宣言セクションに記入ができます。
モジュールレベルの変