7-1)ステートメント for…Next

目次

Excel VBA ベーシック出題範囲

  1. マクロの概念
  2. マクロ記録
  3. モジュールとプロシジャー
  4. VBAの構文
  5. 変数と定数
  6. セルの操作
  7. ステートメント
  8. 関数
  9. ブックとシート操作 マクロの実行

7-1)For…Nextステートメント

For…Nextステートメントは、特定の回数だけループを繰り返すために使用されます。

基本構文

 For 変数 = 初期値 To 終了値 Step 増分
     ‘処理   '(インデントする)
 Next 変数
  • 変数 : 繰り返しの回数を数える為の変数(カウンタ変数)
  • 初期値: 繰り返しの回数のスタートの値
  • 終了値: カウンタ変数の最終地
  • 増分 : 初期値から終了値までの増分

7-1-1)決まった回数の繰り返し

順次処理の場合

データを別のセルにコピーする時、順次処理だと同じ様な文を記述しなかればなりません。

For…Nextステートメントの理解(1)

For文を使うと似たような処理の繰り返しを記述することができます。

For文を使ったプログラム

Dim i As Long 'forの回数をカウント
 Dim r As Long '行数をカウント
  '行の開始位置
  r = 10
  '8回繰り返す
  For i = 1 To 8
     'r 行のE列をH列に入れる
     Cells(r, "J") = Cells(r, "F")
     '次の行を見る
     r = r + 1
     ' For 文に戻る
  Next i

For…Nextステートメントの理解(2)

Next r で、For 文が呼び出されるたびに、r の値が、10 から 17 まで 1 増えて行きます。 この r で行数を示す事で、行を指定できます。

  Dim r As Long '行数をカウント
  '行の位置 10~17 まで回繰り返す
  For r = 10 To 17
     'r 行のE列をH列に入れる
     Cells(r, "L") = Cells(r, "F")
  ' For 文に戻る
  Next r

7-1-2)データの件数が分らない時

列の最後の行をEndメソッドで調べて、Rowプロパティで行数を求めます

  Dim r As Long '行数をカウント
  'Row の最終行を調べる
  lastRow = Range("F10").End(xlDown).row
  '行の位置 10~LastRow まで回繰り返す
  For r = 10 To lastRow
     'r 行のE列をH列に入れる
     Cells(r, "H") = Cells(r, "F")
  ' For 文に戻る
  Next r

7-1-3)複数のFor…Nextを使用する

複数の行を移す時は、Fo文を列挙する事も出来ます。

  Dim r As Long '行数をカウント
  'Row の最終行を調べる
  lastRow = Range("F10").End(xlDown).row
  'E列をH列に移す
  For r = 10 To lastRow
     Cells(r, "H") = Cells(r, "E")
  Next r
  'F列をI列に移す
  For r = 10 To lastRow
     Cells(r, "I") = Cells(r, "F")
  Next r

複数の行を移す時は、Fo文を入れ子にる事も出来ます。

  Dim row, col As Long '行数をカウント
  'Row の最終行を調べる
  lastRow = Range("F10").End(xlDown).row
  '行を順に進める
  For row = 10 To lastRow
    '列を順に進める
    For col = 5 To 6
      ' 5列目を8列目、6列目を9列目に移す
      Cells(row, col + 3) = Cells(row, col)
    Next col
  Next row

7-1-4)二つの票を結合する

入れ子(ネスト)とIF文で、二つの表を合成します。

  Dim row1, row2 As Long '行数をカウント
  Dim lastRow1 As Long '行数をカウント
  Dim lastRow2 As Long '行数をカウント
  '元の表の最終行を調べる
  lastRow1 = Range("C10").End(xlDown).row
  '検索先の表の最終行を調べる
  lastRow2 = Range("H10").End(xlDown).row
  '元の表の行を順に進める
  For row1 = 10 To lastRow1
    '検索先の行を順に探す
    For row2 = 10 To lastRow2
      If Cells(row1, "C") = Cells(row2, "H") Then
         Cells(row1, "E") = Cells(row2, "I")
         Exit For 'For ループを抜ける
      End If
    Next row2
  Next row1
よかったらシェアしてね!
目次