• ベストアンサー

ExcelVBA 変数について

ExcelでD列が500以上のデータの合計をセルD21に表示するプロシージャを作成する場合、 Sub Test3_4_2() Dim i, total '合計用変数total For i = 2 To 19 If Cells(i, 4) >= 500 Then total = total + Cells(i, 4) End If Next Range("D21") = total End Sub 上記の変数Totalの使い方で、total=total+cells(i,4)の部分の意味が 分かりません。 お分かりになられる方がいらっしゃいましたら、ご教示願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.3

プログラムのコードは、数学の式と似ていますが、意味合いが違います。 「=」は等号ではなく、右辺の計算結果を、左辺の変数(=記憶場所)に代入しなさいという意味です。 なので total = total + Cells(i, 4) は total(=それまでの値)に Cells(i,4) の値を足したものを、改めて total に代入することを意味しています。 間単に言えば、totalに Cell(i,4)を加算しろということだけど、こういう書き方をすることになっています。  temp = total + Cells(i, 4)  total = temp の2行を1行にまとめたと思えば、わかりやすいかも ということで、totalにD2、D3・・・と順に加算してゆくので、合計が求められるという仕組み。

yukki117
質問者

お礼

とても良くわかりました。 ありがとうございました。

その他の回答 (4)

  • A88No8
  • ベストアンサー率52% (836/1606)
回答No.5

No.4です。 まだ締め切られていないようなので補足を。 VBAって Visual BASIC for Application というらしいですが、BASICというプログラミング言語で「代入」は、本来 LET total = total + Cells(i, 4) のように LET文で行うものだったとのことです。 マイクロソフトやその他でLET文のLETを省略できるように製品としてのBASIC言語の仕様を変えてしまったことが、代入とイコールが原因のようですね。 なお、VBAでもLET文は使えます。

yukki117
質問者

お礼

お礼が遅くなりましてすみません。 良く分かりました。ありがとうございました。

  • A88No8
  • ベストアンサー率52% (836/1606)
回答No.4

そうそう、この場合の「=」記号は、イコール(等しい)じゃなくて「代入」と考えて下さいね。 Pascal言語だとイコールは「=」、代入は「:=」と明示的に替えているけど、大多数の言語は、判断ならイコール、変数に繋ぐときは代入と意味を使い分けます。

yukki117
質問者

お礼

ありがとうございました。

  • A88No8
  • ベストアンサー率52% (836/1606)
回答No.2

こんにちは cells(i,4)  i は、行アドレス、4は、列アドレス(=D)でセルの内容です。  で、FOR文で iが変わるごとにD列の2行目から19行目までの内容をtotalに足しこんでいきます。 For i = 2 To 19  If Cells(i, 4) >= 500 Then   total = total + Cells(i, 4)  End If Next

yukki117
質問者

お礼

良くわかりました。 ありがとうございました。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

total の値に Cells(i, 4) の値を足した値を、total に入れると言う意味です。 tmp = tmp + 1 など、普通に使われる記述方法です。

yukki117
質問者

お礼

ご回答ありがとうございました。 変数の意味がわかりました。

関連するQ&A