- ベストアンサー
エクセルVBA 計算範囲を変更する。
A1に sum(B1:G1) という計算式が組み込まれています。 モジュールを起動させると、A1の計算式が sum(C1:H1)と選択範囲がセル1つ分右にずれる 様にするにはどうすればよいかご教授ください。 offsetを組み合わせるという所までは何となくわかったのですが、他がさっぱりです。 素人故、わかりづらい説明でしたらご指摘ください。 何卒よろしくお願いいたします。
- みんなの回答 (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)
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)
次のようにすればよいでしょう。 SUM(OFFSET(B1,0,1):OFFSET(G1,0,1))