VBA講座06 Cellsプロパティを使って入力された数値を全て足し合わせます

 今回は次のようなワークシートを先に用意してください。

 VBA合計値マクロシート

 面倒であれば罫線などはいらないので、とにかくセルB2 から B6 に何か値を入れておくだけで結構です。今回はこの入力された値の合計値を求めるマクロを作ってみます。
 

合計値を求めるマクロ

 セルB2 から B6 に入力された数値を全て足し合わせるマクロです。

 Sub 合計値()
  Dim s As Double, y As Double

  For y = 2 To 6
   s = s + Cells(y, 2).Value
  Next y

  Cells(7, 2).Value = s

 End Sub

 マクロを実行するとセル B7 に「 34 」という値が出力されるはずです。
 

Cellsプロパティ

 今回はセルを指定するのに Rangeプロパティではなく、Cellsプロパティ を用いています。RangeプロパティでセルB5(というオブジェクト)を取得するときは

Range("B5")

のように書きます。普段ワークシートを操作するときに扱うセル番地を "" で囲んで指定しているので分かりやすいですね。一方、Cellsプロパティはセル B2 を

Cells(5,2)

という記述で取得します。アルファベットで表されていた列番号 B を 2 という数値に変えて、しかも列と行が入れ替わっています。もう少し一般的に書くと

Cells(行,列)

という形式になっています。引数は最初に行、次に列です。普段のエクセルにおける操作とは感覚が逆になってしまうのでちょっと厄介なのですが、

Cells(y,x)

とすると覚えやすいです。数学では y は縦軸、x は横軸という感覚が身についていますし、y と x を変数名としてそのまま使うことができます。たとえば

Cells(10,3)

という記述を見たときに、ワークシートを思い浮かべながら「縦に 10 下りて、右に 3 動いて」と考えるのです。ところで、なぜわざわざ Cellsプロパティを用いるのかといえば、行を y という変数にして、そこに色々な値を入れたいからなのです。 Rangeプロパティは見た目が分かりやすいのですが、このように引数を変数にすることはできないのです。ですから、セルを For...Next などで繰り返し処理するときは、基本的にはこの Cellsプロパティを用いることになります。
 

繰り返し処理の内容

 前回と同様、For...Nextステートメントでループ処理を行っていますね。

 For y = 2 To 6
  s = s + Cells(y, 2).Value
 Next y

 最初のステップで Cells(y,2) に y = 2 を入れて

s = s + Cells(2, 2).Value

という処理を行うわけですが、これは

s にセルB2 の値を加えたものを新たに s とする

という意味です。最初の段階では変数 s には何も入っていないので s = 0 です。だから s にはセルB2 の値がそのまま入ります。そして次の処理が行われるまで s の値は保持されて、

s = s + Cells(3, 2).Value

という処理でさらにセルB3 の値が加えられて s の値が書き換えられます。同じことを y = 6 になるまで繰り返して合計値を得るのです。そして最後に

Cells(7, 2).Value = s

と記述してセルB7 に合計値 s を書き込みます。

 ≫ 2次関数マクロを作ってみましょう
 ≫ 数学マクロ講座トップページへ戻る

スポンサーリンク
末尾広告
末尾広告

コメントをどうぞ

メールアドレスが公開されることはありません。