管理栄養士のためのVBA入門|第6回:繰り返し処理を理解しよう

みなさん,こんにちは。
シンノユウキ(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にコピーしてください。そして,クロスするセルに,その行と列のそれぞれの数字を足していってみましょう。

 0123456789
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ステートメントは,その使い方次第で,どのような場面でも使用することができます。しっかりと理解しておきましょう。

連載目次

  1. 管理栄養士のためのVBA入門|第1回:VBAとは?
  2. 管理栄養士のためのVBA入門|第2回:VBAを実行してみよう
  3. 管理栄養士のためのVBA入門|第3回:セルを操作してみよう
  4. 管理栄養士のためのVBA入門|第4回:変数と定数について理解しよう
  5. 管理栄養士のためのVBA入門|第5回:条件分岐を理解しよう
  6. 管理栄養士のためのVBA入門|第6回:繰り返し処理を理解しよう現在のページ
タイトルとURLをコピーしました