プログラミングで繰返処理ができるようになれば、いっきに作業効率の向上がみこめるかもしれません。
こちらで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) | A1 | 1 |
2 | (2,1) | A2 | 2 |
3 | (3,1) | A3 | 3 |
4 | (4,1) | A4 | 4 |
5 | (5,1) | A5 | 5 |
6 | (6,1) | A6 | 6 |
7 | (7,1) | A7 | 7 |
8 | (8,1) | A8 | 8 |
9 | (9,1) | A9 | 9 |
10 | (10,1) | A10 | 10 |
ご理解いただけましたでしょうか?
代入される変数によって「セルの位置」と「右辺の値」が順番に変化することによって、セルに「1」から「10」の値が入力されてたことになります。
ステップによる段階的な繰返処理|Step
さきほどご説明した構文に「Step」を追加することで、「開始したい数字」から「終了したい数字」までに加算される数字を指定することができます。
For「変数」 = (開始したい数字)To(終了したい数字)Step(数)
(ここに「変数」をつかって繰返処理した内容を記述)
Next
ちなみに「Step」を指定しない場合は、「1」として認識されます。
たとえば、このような例で考えてみましょう。
- 開始したい数字…1
- 終了したい数字…10
- Step…2
数字が「2ずつ」加算されていくので、結果はこのようになります。
繰返回数 | 数字 |
1 | 1 |
2 | 3 |
3 | 5 |
4 | 7 |
5 | 9 |
まとめ
繰返処理「For ~ Next」の使い方についてご説明をいたしました。
プログラミングでは繰返処理はよく使われている考え方ですので、しっかりとコードの書き方を理解をしておきましょう。
これを使いこなすことができたら、できることの幅がよりいっそう広がりますよ!