• ベストアンサー

VBAの質問です2

たびたび申し訳ありません。 繰り返し処理の中でSUM関数を使うときに、引数をA1のような書き方ではなくて(1,1)のようにしたいのですが、そうするとエラーになってしまいます。 これはVBAの問題ではなくて単にSUM関数の引数を(1,1)のように書きたいときにはどうすればいいかという問題だと思いますが。 =SUM((30*I-18,5):(30*I+8,5)) ではだめなんです。 よろしくお願いいたします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

>これは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)
回答No.2

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

関連するQ&A