• ベストアンサー

エクセルマクロ変数を使った計算式

エクセル2003です。 Cells(標準値合計場所, 処理列).Value = "=SUM(Cells(10,処理列):Cells(最終行,処理列)" これですと、指定したセルの Cells(標準値合計場所, 処理列)には ダブルクォーテーションに囲われた間は固定編集された文字列として扱われるので =SUM(Cells(10,処理列):Cells(最終行,処理列) という文字がセットされてしまい 求めている、範囲の合計値がセットされません。 どこをどのように修正すればいいか教えてください。

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

  • ベストアンサー
  • ottimisto
  • ベストアンサー率72% (8/11)
回答No.2

Cells(標準値合計場所, 処理列).Value = "・・・" は、Valueに、"・・・"という文字列を代入してしまいます。 Cells(標準値合計場所, 処理列).Value = WorksheetFunction.Sum(Range(Cells(10,処理列), Cells(最終行,処理列))) にしましょう。

gx9wx
質問者

お礼

ありがとうございます。 ネットでは演算子と変数は ダブルダブルクォーテーションで くくる事 と有ったのですが、どこにどういれても コンパイルエラーで駄目でした。

gx9wx
質問者

補足

ありがとうございます。 こちらは思っていたとうり動くのですが なぜSUMの場合はWorksheetFunction.Sumなのでしょうか? Cells(処理行, 見積値列).Value = Cells(処理行, 13) * Cells(処理行, 処理列) * Cells(処理行, 14)

その他の回答 (2)

  • ottimisto
  • ベストアンサー率72% (8/11)
回答No.3

1.“なぜSUMの場合はWorksheetFunction.Sumなのか?”について ちょっとプログラムの専門的な話しになってしまいますが…、 VBAでプログラムを作成する場合、Sumが何であるのかを定義してあげる必要があります。 合計を計算するために、そのはたらきをしてくれる「WorksheetFunctionというクラスの、Sumを使うんだよ~」と宣言しないといけません。 エクセルシート上で「=SUM()」と記述すると合計を計算してくれるのは、“WorksheetFunction.を使うのが当たり前だから、省略してしまいましょう”ということだと思って下さい。 2.“ダブルコーテーションでくくる事”について これは、No.1のpidumさんの説明にある、.Formulaを使用する場合のことです。 .Valueに使用すると、ダブルコーテーションの中身の文字列をセルに代入する、という意味になりますので、全くことなる動作となります。

gx9wx
質問者

お礼

返事送れて すいません。 ありがとうございました。

noname#203218
noname#203218
回答No.1

Cells(標準値合計場所, 処理列).Formula = _ "=SUM(" & Cells(10, 処理列).Address(False, False) & ":" & _ Cells(最終行, 処理列).Address(False, False) & ")" 式を挿入しようとしているのでValueではなく、Formulaになります。 変数に漢字を使用するのは間違いの元になるので感心しませんが・・・・

gx9wx
質問者

お礼

すいません。 変数が漢字でないと組めないんです。 これは式をセルに挿入でしょうか? 質問説明不足ですいません。 式は残さず値だけをセットしたいです。

関連するQ&A

専門家に質問してみよう