- ベストアンサー
VBAの質問です2
たびたび申し訳ありません。 繰り返し処理の中でSUM関数を使うときに、引数をA1のような書き方ではなくて(1,1)のようにしたいのですが、そうするとエラーになってしまいます。 これはVBAの問題ではなくて単にSUM関数の引数を(1,1)のように書きたいときにはどうすればいいかという問題だと思いますが。 =SUM((30*I-18,5):(30*I+8,5)) ではだめなんです。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>これはVBAの問題ではなくて単にSUM関数の引数を(1,1)のように書きたいときにはどうすればいいかという問題だと思いますが。 VBAの問題ではないというのは、良く分かりません。 ワークシートとVBAとは、その文法を同じにすることはできません。 VBAとの共有点はあっても、ワークシートとVBAは仕組み自体が根本的に違います。 まず、VBAの入門書などで確認することをお勧めします。 >=SUM((30*I-18,5):(30*I+8,5)) ワークシート関数の引数に、Rangeオブジェクトを入れるのでしたら、VBAでは、A1ではなく、Range("A1")とするか、Cells(1,1)とします。 Sum関数自体は、SUM(1,1) とは引数を取ることができますが、答えは、2 になります。 例を2つ挙げておきますので、参考にしてみてください。 Sub test() LastNum = 5 For I = 1 To LastNum Cells(I, 1).Value = WorksheetFunction.Sum(Range(Cells(30 * I - 18, 5), Cells(30 * I + 8, 5))) Next I End Sub '---------------------- Sub test2() LastNum = 5 For I = 1 To LastNum Cells(I, 1).Value = Evaluate("=Sum(E" & (30 * I - 18) & ":E" & (30 * I + 8) & ")") Next I End Sub
その他の回答 (1)
- papayuka
- ベストアンサー率45% (1388/3066)
E39 に =SUM(E12:E38) E69 に =SUM(E42:E68) ・ ・ のようにしたいって事? Sub aaa() With ActiveSheet For i = 1 To 10 .Cells(30 * i + 9, 5) = _ "=sum(" & .Range(.Cells(30 * i - 18, 5), _ .Cells(30 * i + 8, 5)).Address(0, 0) & ")" Next i End With End Sub