ExcelマクロVBA入門 | 第16回.繰り返し処理(For Next) | Excelマクロの基礎と応用、エクセルVBAの入門・初級・初心者向け解説



最終更新日:2016-03-29

第16回.繰り返し処理(For Next)


同様の事を繰り返す場合、回数分の記述をしていたのでは、

何のためのマクロか分からなくなってしまいます、

繰り返す処理をループ処理と言い、For〜Nextを使います。


まさに、マクロがマクロたる所以であり、自動化する為の必須記述になります。


マクロでのループ処理の記述は何通りかあります。


まずは、For〜Nextです。


For〜Next


指定した回数だけ、一連のステートメントを繰り返すフロー制御ステートメントです。


構文


For counter = start To end [Step step]
[statements]
[Exit For]
[statements]

Next [counter]

counter 必ず指定します。カウンタに使う数値変数を指定します。配列変数およびブール型 (Boolean) に含まれる変数は指定できません。
start 必ず指定します。引数 counter の初期値を指定します。
end 必ず指定します。引数 counter の最終値を指定します。
step 省略可能です。ループを繰り返すごとに引数 counter に加算される値を指定します。引数 step を省略すると、ループを繰り返すごとに引数 counter には 1 が加算されます。
statements 省略可能です。ループ内で実行される一連のステートメントで、For と Next の間に記述します。ここに記述したステートメントは、For...Next ステートメントで指定した回数だけ実行されます。


これは、Excelのヘルプからの抜粋です。


これを読んでわかるなら苦労しないし、このブログは見ないでしょうから、


もう少し詳しく、説明します。


まず、ステートメントとは、マクロの挙動を制御する構文、命令文です。


では、余分なものを消して、さらに日本語で書くと


For 変数 = 開始数値 To 終了数値

・・・処理・・・

Next [変数]


[変数]は、省略可能です。


例文です。


A1セルからA10セルに、1を入れる場合です。

Sub 練習1()
  Dim i
  For i = 1 To 10
    Cells(i, 1) = 1
  Next i
End Sub


変数iが、1から10まで、自動的にアップしていきます

つまり、


Cells(1, 1) = 1

Cells(2, 1) = 1

・・・

Cells(10, 1) = 1


と、順に、変数i1〜10で実行してくれます。


1行ずつ説明を書くと

Sub 練習1()


  Dim i        '変数iを宣言


  For i = 1 To 10   '変数iを1から10まで1づつカウントアップ

    Cells(i, 1) = 1 '値列のi行目のセルに1を入れる


  Next i        'Forの範囲はここまで


End Sub



では、1行目、3行目、5行目・・・


と、1行置きにする場合は、

Sub 練習2()
  Dim i
  For i = 1 To 10 Step 2
    Cells(i, 1) = 1
  Next i
End Sub



と指定します。


Step 2


これが1行置きの指定です、iが2ずつ増えていきます


つまり、これを書かない時は、


Step 1


と言う事です。


このStepは、マイナス数値も指定できます


Step -1


とすれば、iは、1ずつ減っていきます。


セルの行を下から処理したい場合に使用します。


これは非常に多くの場合に使用されます、それは、後々。



Exit For


は、For〜Nextのループを抜けます。


指定の終了数値にたっする前に、


For〜Nextのループ処理を終了したい場合に使用します。


これについても、後々。


For〜Nextのネスト(入れ子)


縦10行、横10列に1を入れる場合です。

Sub 練習3()
  Dim i, j
  For i = 1 To 10
    For j = 1 To 10
      Cells(i, j) = 1
    Next j
  Next i
End Sub


実行して、確認して下さい。


For〜Nextのネストは、概ね3段階までにしましょう。





同じテーマ「ExcelマクロVBA入門」の記事

第17回.繰り返し処理(Do Loop)
第18回.最終行の取得(End,Rows.Count)
第19回.総合練習問題1
第20回.条件分岐(IF)
第21回.条件分岐(ElseIf)
第22回.条件分岐(Select Case)
第23回.メッセージボックス(MsgBox関数)

新着記事 ・・・新着記事一覧を見る

SUMIFの間違いによるパフォーマンスの低下について|エクセル関数超技(6月17日)
条件式のいろいろな書き方:TrueとFalseの判定とは|ExcelマクロVBA技術解説(6月15日)
空白セルを正しく判定する方法2|ExcelマクロVBA技術解説(5月6日)
フルパスをディレクトリ、ファイル名、拡張子に分ける|ExcelマクロVBA技術解説(4月15日)
テキストボックスの各種イベント|Excelユーザーフォーム入門(4月9日)
フォルダ(サブフォルダも全て)削除する、Optionでファイルのみ削除|ExcelマクロVBAサンプル集(4月4日)
最後の空白(や指定文字)以降の文字を取り出す|エクセル関数超技(3月26日)
先頭の数値、最後の数値を取り出す|エクセル関数超技(3月26日)
Excelファイルを開かずにシート名をチェック|ExcelマクロVBAサンプル集(3月23日)
数式の参照しているセルを取得する|ExcelマクロVBAサンプル集(3月18日)

アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|ExcelマクロVBA入門
2.RangeとCellsの使い方|ExcelマクロVBA入門
3.Range以外の指定方法(Cells,Rows,Columns)|ExcelマクロVBA入門
4.変数とデータ型(Dim)|ExcelマクロVBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|ExcelマクロVBA入門
6.定数と型宣言文字(Const)|ExcelマクロVBA入門
7.徹底解説(VLOOKUP,MATCH,INDEX,OFFSET)|エクセル関数超技
8.マクロって何?VBAって何?|ExcelマクロVBA入門
9.CSVの読み込み方法|ExcelマクロVBAサンプル集
10.ひらがな⇔カタカナの変換|エクセル基本操作



  • >
  • >
  • >
  • 繰り返し処理(For Next)

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。

    ↑ PAGE TOP