• ベストアンサー

SUM関数の範囲を変数を代入して機能させたいのですが、、、

列方向にSUM関数をいれたいのですが、その列数がその時によって違います。そこで、その変数をインプットboxから求めて次のようにしました。が、エラー!! Dim i as Integer i=InputBox("数字を入力してください") Activecell.FormulaR1C1="=sum(RC[-i]:RC[-1])" 上の行がエラー部分です。エラーコード1004 変数iがうまいこと入ってくれないんです。どうしよう?

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

""の中は文字列であることに注意 ActiveCell.FormulaR1C1 = "=sum(RC[" & -i & "]:RC[-1])"

dejiwo
質問者

お礼

VBA初心者1週間目でこの場合の&がどういう役目を果たすのかがまだわかりませんが、この通りやってみると、まさしく求めていたように機能してくれました。 本当に助かりました。有難うございました。今回初めて質問させてもらって、こんなに早く回答頂いて驚きと感謝でいっぱいです。本当に助かりました。ありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

他の方法を提案します。 Function lgyou(a) lgyou = Cells(30, a).End(xlUp).Row End Function Sub test01() For j = 1 To 3 MsgBox WorksheetFunction.Sum(Range(Cells(1, j), Cells(lgyou(j), j))) Next j End Sub データは30行まで、その下には別のデータや合計があるとします。 上記例では、A-C列の合計をそれぞれ出しています。 R1C1形式はおさらばしましょう。 多にも方法はありますが、SUMを使ってみました。 列合計は、 式を埋め込む(質問の例) 上の行から、空白セルまで順次足していく 上の行から最下行まで足していく など考えましたが。

dejiwo
質問者

お礼

今回初めて質問させてもらって早速の回答を頂き本当にありがとうございました。記念すべき第1号回答をいただきました。VBA初心者1週間なのでいただいた回答をこれからじっくりさせていただきます。本当にありがとうございました。

関連するQ&A