【Excel VBA入門】マクロの繰り返し処理|For ~ Next

記述編

プログラミングで繰返処理ができるようになれば、いっきに作業効率の向上がみこめるかもしれません。
こちらでVBAでの具体的な「For ~ Next」の使い方をご紹介します。

スポンサーリンク

繰返処理とは

こちらは条件に達するまで繰返処理をさせたいときに使います。

おなじ処理をなんども実行させたいとき、ひとつずつコードを記述していたらすごいコード行数になりますよね?

たとえば、Excelのリストが100行あってそこに同じ処理を実行させたい場合「1行目から100行目までひとつずつ記述する」という場合です。

これはあまり現実的ではありませんので、こういった場合に「繰返処理」を検討しましょうというわけです。

For ~ Nextの使い方

基本的な使い方

繰返処理をしたいときに「For ~ Next」を使います。
また、繰返処理には「変数」をつかいます。
この「変数」にたいして値を順番に代入をすることによって、操作対象を順番に定義するといった考え方です。

まずは具体的なコードを使ってご説明します。
こちらが記述したい内容です。

【スタート】マクロの名前:for_next
    (変数の作成)「変数:box」を数字型として定義する

    (繰返処理の開始)「変数:box」に1から10までを順番に代入して繰返実行する
        セル(「変数:box」,1)に「変数:box」の値を代入する
    (繰返処理の終了)繰返処理の開始へ戻る
【ゴール】

こちらがコードの内容です。

Sub for_next()
    Dim box As Long
    
    For box = 1 To 10
        Cells(box, 1).Value = box
    Next
End Sub

実行結果はこちらです。

それでは、コードのポイントについて解説をします。

For 「変数」 = (開始したい数字) To (終了したい数字)
    (ここに「変数」をつかって繰返処理した内容を記述)
Next

「変数」に、「開始したい数字」から「終了したい数字」までが順番に代入されていきます。

さきほどの例の場合、数字の「1」から「10」が「変数:box」に順に代入されていますので、「変数:box」の値は「1,2,3,4,5,6,7,8,9,10」と変化します。

Cells(box, 1).Value = box

上記コードの5行目

つまり、「変数:box」に代入される値の変化にともなって、「セルの位置」と「右辺の値」が変化することになります。
この部分をさらに詳しくみていきましょう。

「変数:box」に代入される数字cellsの値セルの位置右辺の値
1(1,1)A11
2(2,1)A22
3(3,1)A33
4(4,1)A44
5(5,1)A55
6(6,1)A66
7(7,1)A77
8(8,1)A88
9(9,1)A99
10(10,1)A1010

ご理解いただけましたでしょうか?

代入される変数によって「セルの位置」と「右辺の値」が順番に変化することによって、セルに「1」から「10」の値が入力されてたことになります。

ステップによる段階的な繰返処理|Step

さきほどご説明した構文に「Step」を追加することで、「開始したい数字」から「終了したい数字」までに加算される数字を指定することができます。

For「変数」 = (開始したい数字)To(終了したい数字)Step(数)
    (ここに「変数」をつかって繰返処理した内容を記述)
Next

ちなみに「Step」を指定しない場合は、「1」として認識されます。

たとえば、このような例で考えてみましょう。

  • 開始したい数字…1
  • 終了したい数字…10
  • Step…2

数字が「2ずつ」加算されていくので、結果はこのようになります。

繰返回数数字
11
23
35
47
59

まとめ

繰返処理「For ~ Next」の使い方についてご説明をいたしました。

プログラミングでは繰返処理はよく使われている考え方ですので、しっかりとコードの書き方を理解をしておきましょう。

これを使いこなすことができたら、できることの幅がよりいっそう広がりますよ!