• ベストアンサー

エクセルVBA 計算範囲を変更する。

A1に sum(B1:G1) という計算式が組み込まれています。 モジュールを起動させると、A1の計算式が sum(C1:H1)と選択範囲がセル1つ分右にずれる 様にするにはどうすればよいかご教授ください。 offsetを組み合わせるという所までは何となくわかったのですが、他がさっぱりです。 素人故、わかりづらい説明でしたらご指摘ください。 何卒よろしくお願いいたします。

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

  • ベストアンサー
回答No.3

>素人故、わかりづらい説明でしたらご指摘ください。 わかりづらいではなく、ふつうはVBAでは、そんなことはしません。 しかし、質問の文章で、人それぞれの捉え方があるのは否めませんね。 VBAでは、数式は文字列ですから、それを書き換えるということは、面倒なのです。 以下は、たぶん、セルは一つではないと言われそうだから、サブルーチンにして分けてみました。 '// Sub Test1()   MoveContents Range("A1"), 1  End Sub Function MoveContents(Rng As Range, i As Long) ''Rng は、対象セル, i は右への移動セル数 Dim Frml As String   If Rng.HasFormula Then     Rng.Offset(, i).Copy Cells(Rows.Count, 1)     Rng.Copy Rng.Offset(, i)     Frml = Rng.Offset(, i).Formula     Rng.Formula = Frml     Cells(Rows.Count, 1).Copy Rng.Offset(, i)     Cells(Rows.Count, 1).Clear   End If End Function

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

A1の数式を直接書き換えるマクロ,というご相談でいいんでしょうか。 sub macro1() range("A1").formula = "=SUM(" & range("A1").directprecedents.offset(0,1).address(false,false) & ")" end sub #参考 sub macro2()  dim res as string  application.screenupdating = false  range("B:B").insert shift:=xlshifttoright  res = range("A1").formula  range("B:B").delete shift:=xlshifttoleft  range("A1").formula = res  application.screenupdating = true end sub

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

次のようにすればよいでしょう。 SUM(OFFSET(B1,0,1):OFFSET(G1,0,1))

関連するQ&A

専門家に質問してみよう