以前書いたエクセルVBA講座の続きです。
今回は少し実用的なものとしてループでワークシート関数を挿入する方法をお伝えしたいと思います。
ワークシート関数だからといって挿入自体に特別な方法は必要ありません。そのまま文字として入力すれば大丈夫です。
1 |
Sheets("Sheet1").Cells(1, 1).Value = "=SUM(A2:A3)" |
これを実行すると、Sheet1というシートのA1セルにSUM関数が入ります。
ではもう少し便利にするためにForループのカウンター変数を利用してみます。
1 2 3 |
For r = 1 To 4 Sheets("Sheet1").Cells(r, 1).Value = "=SUM(B" & r & ":C" & r & ")" Next |
細かく見ていきます。
先ずForループの中の処理は4回実行されます。そのときrというカウンタ変数は1,2,3,4というように変化していきます。
rの変化と指定しているセルの位置を考えてみると、
rが1のときCells(1,2)
rが2のときCells(2,2)
rが3のときCells(3,2)
rが4のときCells(4,2)
となります。Cellsの中身は行,列ですので、A1,A2,A3,A4セルを対象にして挿入していることが分かります。
“=SUM(B” & r & “:C” & r & “)”の部分について、文字としてそのまま利用したい部分はダブルクォーテーションで囲い、変数の中身を利用したい部分はダブルクォーテーションで囲わずそのまま記入します。それらを&記号(左右に半角スペース必須)でつなぎます。
***
この部分は分かりづらいのもう少し細かく解説すると、セルの中に書き込める値は2種類(実際はもっとありますが現時点では)あると考えてください。1つはダブルクォーテーションで囲った文字、もう1つは変数で、ダブルクォーテーションで囲った文字はそのまま書き込まれ、変数は中身が利用されます。
そしてその2種類は&記号(左右に半角スペース必須)で、順番や数に制限なく自由につなぐことができます。
1 2 3 4 |
v1 = "hello" v2 = "world" MsgBox v1 & " " & v2 |
1 2 3 4 5 |
v1 = "hello" v2 = " " v3 = "world" MsgBox v1 & v2 & v3 |
どちらも実行するとhello worldと表示されます。
***
話を戻します。
具体的にrの変化を見ていくと、
rが1のとき、”=SUM(B1:C1)”
rが2のとき、”=SUM(B2:C2)”
rが3のとき、”=SUM(B3:C3)”
rが4のとき、”=SUM(B4:C4)”
となります。
結果として
rが1のとき、A1セルに”=SUM(B1:C1)”
rが2のとき、A2セルに”=SUM(B2:C2)”
rが3のとき、A3セルに”=SUM(B3:C3)”
rが4のとき、A4セルに”=SUM(B4:C4)”
が入るということになります。
Forループのカウンタ変数をループの中で利用することはよくあります。むしろループの中で固定の文字列を挿入することの方が少ないぐらいです。
さらにカウンタ変数を利用したワークシート関数を挿入する方法が使えるようになると、かなり複雑なことができるようになります。