VBAは同じようなことを大量にすることが得意です。大量にさせる時用いるのがFor文です。VBAのForはC言語のFor文のように多機能ではありませんが、その分とても取っ付き易い構文になっています。For文を使いこなして業務を高速化させましょう!
For文VBAはじめの一歩
VBAのFor文は大雑把に分けてカウントアップ/ダウンのForとオブジェクトループをするForの2種類に分かれます。VBAでは2種類とも頻出ですが、この記事では前者のカウントアップ/ダウンのみ解説します。後編のオブジェクトループもどうぞ
1.For文の構文
For文の構文はとてもシンプルです。
基本構文は
For Variable = Start To End Step StepNum
‘VariableがStartからEndまでStepNum間隔ごとにカウントアップ/ダウン
Next Variable
です。
ここでStep StepNumの部分と、Next VariableのVariableの部分は省略可能です。前者を省略した場合はStep 1が内部的に補完され1ずつカウントアップします。後者の省略は無視されるだけです。
2.サンプルを作ってみよう
A1からA10まで数字を1ずつ増やして入力してみます。
Sub sumple()
Dim i As Integer
For i = 1 To 10
Cells(i, 1) = i
Next i
End Sub
Cells(i, 1) = i
Next i
End Sub
実行後はこのような形になります。
3.九九を作ってみよう
先程もそうでしたが、単純なループ変数の場合「 i 」を使うことが多いです。
その中で更にループする時(ネストするといいます)は「 j 」、「 k 」とiからアルファベット順になることが多いです。
これはプログラミング業界の慣習で、ほとんどの人が暗黙のルールとして従っています。しかし一時的な変数に対してこのような名前付けをすべきで、この記事の例の「 i 」は「Row」とすべきですし、「 j 」は「Column」とすべきです。
しかし今回はサンプルということで、シンプルさを追求しました。
九九を表示するVBAコードは以下になります。
Sub sumple()
Dim i As Integer
Dim j As Integer
For i = 1 To 9
For j = 1 To 9
Cells(i, j) = i * j
Next j
Next i
End Sub
For j = 1 To 9
Cells(i, j) = i * j
Next j
Next i
End Sub
実行後は次のような形になります。
今回でVBAにおけるFor文の一番簡単な部分はマスターできたと思います。
ただ簡単と言いつつ、Forを使う8割の場合はこの一番シンプルなFor文ですから価値は十分にあります。
蛇足ですが、セルの指定を数字で出来るという点でRangeよりCellsのほうがFor文と相性がいいオブジェクトになります。