今回は、繰り返し処理を用いたマクロを作ってみましょう。
For文という構文を使います。
ExcelVBAに限らずほとんどのプログラミング言語で使われるので、
知っている方も多いかと思います。
今回の問題の内容は、
A1セル~A10セルまでの10個のセルに、1~10までの値を順番に入れるマクロを
作るには?とします。結果のイメージはこんな感じ↓ですね。
たったの3行のコードでこれを実現できてしまいます。
今回は10個のセルですが、これは数が100個になろうと1000個になろうと、
同じく3行のコードで実現することができます。
では、マクロを覗いて見ましょう。こちらです。
Sub Q4_Answer()
For i = 1 To 10
Range("A" & i).Value = i
Next i
End Sub
このマクロを実行すると、先ほどの画像のような結果が得られます。
さて、このマクロのポイントなんですが、For文よりも以下の表記がポイントだったりします。
Range("A"& i).value
このように表記することによって、iがFor文の中で変化するにつれて、
入力するセルがひとつずつ下へずれていくというわけです。
ちなみにちょっと変わった正解例もご紹介しておきます。
Sub Q4_Answer_ex()
For i = 1 To 10
Range("A1").Offset(i - 1, 0).Value = i
Next i
End Sub
Offsetプロパティを利用して、入力するセルをずらすテクニックです。
Range().Offset(ずらす行、ずらす列)とします。(0なら省略も可)
例えば、Range("A1").Offset(1,)とすると、A1セルから1行下のセル、
つまり、A2セルを示します。
また、Range("A1").Offset(,1)とすると、列が1つ右にずれます。
つまり、B1セルを示すことになります。
これを、先ほどのようにFor文の中で利用することによって、
1つずつ下へ入力するセルをずらしています。
プログラミングの世界は正解はひとつとは限らず、いろいろなやり方が
考えらえます。実現したいことによって、いいやり方悪いやり方がありますが、
まずは、実現したいことを実現する為に、いろいろなやり方があるというのを
知っておくと、柔軟な発想ができるかも知れませんね。