みなさん,こんにちは。
シンノユウキ(shinno1993)です。
今回は「管理栄養士のためのVBA入門」の第6回,以下の記事の続きです。
前回は,条件分枝についての基本的な知識について解説しました。
今回は繰り返し処理と呼ばれる,同じ処理を何度も繰り返すための方法をご紹介していきます。
では,行きましょう。
繰り返し処理の基本概念
初めに,繰り返し処理について紹介していきます。
プログラミングを行っていると,同じ処理を少し条件を変えて行っていきたい,という場合が多くあります。たとえば,セルに対する処理で,上のセルから下のセルに向かって,順番に処理していきたいという場合です。繰り返し処理は,こういった場合に,大きな効果を発揮します。
以下では,基本的な繰り返し処理を行う方法,For~Nextステートメントについて基本的な使い方を紹介していきます。
For~Nextステートメント
For~Nextステートメントを用いることで,処理を,予め指定した回数分だけ繰り返すことができるようになります。以下で,基本的な書き方や使用例などを確認していきましょう。
基本的な書き方
以下が基本的な書き方です。
For カウンタ変数 = 初期値 to 終値 Step 増減分 繰り返す処理 Next カウンタ変数
カウンタ変数というのは,For~Nextのループを回す過程で,増減していく変数のことです。一般的に,i・j・kのどれかが用いられます。
初期値というのは,カウンタ変数の増減前の最初の値です。最初に処理が行われる際に,変数に入る値のことです。この初期値から,処理を繰り返すに従って,値が増減していきます。
そして,初期値をtoでつなぐことで終値を入力します。カウンタ変数が終値にまで達すると,繰り返しは終了となります。
終値にStepを繋げて増減分を入力します。増減分は,繰り返し処理が終わった際に,カウンタ変数から増減する値のことです。増減分を「2」とすると,繰り返し処理が終わった時点でカウンタ変数に2が加えられます。なお,増減分が「1」の場合は記述を省略することができます。
そして,繰り返す処理を記述し,Nextでくくります。
これがFor~Nextステートメントです。
例
では,実際に使用してみて,繰り返し処理がどんなものであるのかを確認してみましょう。
最初に,1~10までの数字を,順番にメッセージとして表示するプログラムを作成してみましょう。以下のようになれば正解です。
Sub lesson() Dim i As Long For i = 1 To 10 MsgBox i Next i End Sub
カウンタ変数をiとし,初期値を1,終値を10としました。Stepの後の増減分は1なので省略しています。
カウンタ変数:iに1を加えながら,それをMsgBoxで表示しています。
では,次は,セルA1から下に順番に1~10の数字を入れてみましょう。以下のようになれば正解です。
Sub lesson() Dim i As Long For i = 1 To 10 Cells(i, 1).Value = i Next i End Sub
カウンタ変数は初期値,終値は先ほどと同じですが,処理の内容が変わっています。Cellsの行インデックスにカウンタ変数を用いることで,下方向に繰り返し処理していくことができます。
入れ子にすることもできる
また,この繰り返し処理は入れ子にすることもできます。繰り返し処理の中に,さらに繰り返し処理を書くことで,2重に処理を繰り返すことができます。
例として,100マス計算をやってみましょう。以下の表をセルA1にコピーしてください。そして,クロスするセルに,その行と列のそれぞれの数字を足していってみましょう。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
0 | ||||||||||
1 | ||||||||||
2 | ||||||||||
3 | ||||||||||
4 | ||||||||||
5 | ||||||||||
6 | ||||||||||
7 | ||||||||||
8 | ||||||||||
9 |
以下のようになれば正解です。
Sub lesson() Dim i As Long, j As Long For i = 2 To 11 For j = 2 To 11 Cells(i, j).Value = Cells(i, 1).Value + Cells(1, j).Value Next j Next i End Sub
カウンタ変数iを行番号を指定する変数に,jを列番号を指定する変数としました。このように,繰り返し処理を入れ子にすることで,今回の例だと行方向だけでなく,同時に列方向にも処理を繰り返すことができるようになりました。
まとめ
今回は複雑なプログラムを作成する際に必要となる,繰り返し処理について説明しました。For~Nextステートメントは,その使い方次第で,どのような場面でも使用することができます。しっかりと理解しておきましょう。
連載目次
- 管理栄養士のためのVBA入門|第1回:VBAとは?
- 管理栄養士のためのVBA入門|第2回:VBAを実行してみよう
- 管理栄養士のためのVBA入門|第3回:セルを操作してみよう
- 管理栄養士のためのVBA入門|第4回:変数と定数について理解しよう
- 管理栄養士のためのVBA入門|第5回:条件分岐を理解しよう
- 管理栄養士のためのVBA入門|第6回:繰り返し処理を理解しよう現在のページ