Excel VBA 繰り返し処理

スポンサーリンク
スポンサーリンク

繰り返し処理の種類

For Next 【フォーネクスト】ステートメント

指定した回数処理を繰り返すには、For Next 【フォー ネクスト】ステートメントを使用します。

カウンタ変数に代入する「初期値」から「最終値」まで処理を繰り返します。
Stepには、「加算値」を指定しますが、「加算値」が「1」の場合は省略します。
初期値」が「最終値」より大きい値の場合はStepに負の値を指定します。


A1セルからA10セルに連番を代入するコード例

Sub フォーネクスト()
Dim i As Integer
For i = 1 To 10
Cells(i, 1).Value = i
Next i
End Sub

コードの解説

2行目【Dim i As Integer】
セルの行番号と、代入する値を兼ねる値を格納するカウンタ変数「i」を整数型(Integer)で宣言します。


3行目【For i = 1 To 10】
For【フォ-】ステートメントを使用して繰り返し処理の始まりです。カウンタ変数iに初期値1から最終値10の値を順次代入します。


4行目【Cells(i, 1).Value = i】
1列目(A列)のi行目のiの値を代入します。


For Next【フォ-ネクスト】ステートメントコード使用例リンク

データの1行おきに任意の空白行を挿入する
セルの姓と名、都道府県と市町村を分割する
データ項目の境目に印刷改ページを挿入する
複数シートのデータを集計シートにまとめる
1行おきに色を塗る
空白を半角か全角に揃える
入力されたデータの表記を統一する
必要な項目列のデータのみ別シートに抽出する
指定した図形(シェイプ)を指定個数作成する
住所データをGoogleMapにリンクする方法
複数のシートのデータを固定長のテキスト形式で書き出す


For Each Next【フォー イーチ ネクスト】ステートメント

ワークシートやセルなどの同じオブジェクトの集まりであるコレクションの各要素に同じ処理を繰り返すには、For Each Next【フォー イーチ ネクスト】ステートメントを使用します。

オブジェクト型変数を用意して、オブジェクト型変数にコレクション内の各オブジェクトを格納しながら、指定したオブジェクトの数だけ繰り返します。

A1セルからA10セルに連番を代入するコード例

Sub フォーイーチ()
Dim セル As Range
Dim i As Integer
i = 1
For Each セル In Range("A1:A10")
セル.Value = i
i = i + 1
Next
End Sub

コードの解説

2行目【Dim セル As Range】
繰り返すオブジェクトの範囲を格納する、オブジェクト型変数の「セル」をオブジェクト型(Range)で宣言します。


3行目【Dim i As Integer】
セルの行番号と代入する値を兼ねる値を、格納するカウンタ変数「i」を整数型(Integer)で宣言します。


4行目【i = 1】
カウンタ変数iに1を代入します。


5行目【For Each セル In Range(“A1:A10”)】
For Each【フォーイーチ】ステートメントで繰り返し処理の始まりです。オブジェクト変数「セル」に対象範囲のオブジェクトの集まりであるセルのコレクションからその構成要素の個々のセル(オブジェクト)を取り出して、オブジェクト変数「セル」に代入します。


6行目【セル.Value = i】
繰り返しの中でオブジェクト変数「セル」に代入されているセルにカウンタ変数「i」の値を代入します。


7行目【i = i + 1】
カウンタ変数iに1を加算します。


For Each Next【フォーイーチネクスト】ステートメントコード使用例リンク

閉じている複数のブックのデータを集計用のブックに集める

Do While Loop【ドゥ ワイル ループ】ステートメント

設定した条件式が満たされている(True)間、処理を繰り返すには、Do While Loop【ドゥ ワイル ループ】ステートメントを使用します。

条件式で使用される比較演算子の一覧

演算子内容使用例結果
<より小さい5<2False
<=以下5<=2False
>より大きい5>2True
>=以上5>=2True
=等しい5=2False
<>等しくない5<>2True

A1セル~A10セルに連番を代入するコード例

Sub ワイル()
 Dim i As Integer
  i = 1
 Do While i < 11
  Cells(i, 1) = i
  i = i + 1
 Loop
End Sub

コードの解説

2行目【Dim i As Integer】
繰り返した回数と行番号を兼ねる、カウンタ変数の「i」を整数型(Integer)で宣言します。


3行目【i = 1】
カウンタ変数のiに1を代入します。ここでiに1を代入しないと5行目の「Cells(i, 1).Value = i」で、変数iに値がないためエラーになります。


4行目【Do While i < 11】
Do While【ドゥワイル】ステートメントの条件式に「i < 11」つまり、変数iが11より小さい間繰り返すを定義します。


5行目【Cells(i, 1).Value = i】
1列目(A列)のセルのi行目に、カウンタ変数iに格納されている値を代入します。


6行目【i = i + 1】
カウンタ変数iに1を加算します。


Do Until Loop【ドゥ アンチル ループ】ステートメント

設定した条件を満たされていない(False)間、処理を繰り返すには、Do Until Loop【ドゥ アンチル ループ】ステートメントを使用します。

A1セル~A10セルに連番を代入するコード例

Sub アンチル()
 Dim i As Integer
  i = 1
 Do Until i = 11
  Cells(i, 1) = i
  i = i + 1
 Loop
End Sub

コードの解説

4行目【Do Until i = 11】
Do Until【ドゥアンチル】ステートメントの条件式に、「i = 11」つまり、変数iが11になるまでの間繰り返すを定義します。


Do Loop While 【ドゥ ループ ワイル】ステートメント

Do Loop Until 【ドゥ ループアンチル】ステートメント

Do While LoopステートメントやDo Until Loopステートメントは、最初に条件判断をするため、最初の値と条件によっては
処理が一度も実行されない場合があります。少なくとも一度は処理をしたい場合は、最後に条件判断をする
Do Loop While 【ドゥ ループ ワイル】ステートメントか、Do Loop Until 【ドゥ ループアンチル】ステートメントを使用します。

A1セルからA10セルに連番を代入するコード例

Sub ループワイル()
 Dim i As Integer
  i = 1
 Do 
  Cells(i, 1) = i
  i = i + 1
 Loop While i < 11
End Sub
Sub ループアンチル()
 Dim i As Integer
  i = 1
 Do 
  Cells(i, 1) = i
  i = i + 1
 Loop Until i = 11
End Sub

以上で条件分岐についての解説を終了します。
ありがとうございました。

スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク