• ベストアンサー

VBAで列に計算式を入れたい

お世話になります。 sheet1のG列全体にVBAで数式を入れて、 deleteキーを押しても式が消えないようにしたい思っています。 G1=D1*F1 ~ G65536=D65536*F65536(G列=D列*F列) のように同じ行同士の計算で、 G列全体に式を入れたいと思っています。 よい方法ご存知の方いらっしゃいましたら 宜しくお願いします。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

> deleteキーを押しても式が消えないようにしたい シート保護でいいんですよね? Sub test01() With ActiveSheet .Range("G:G").Locked = True .Range("G:G").FormulaR1C1 = "=RC[-3]*RC[-1]" .Protect End With End Sub

Turkey-R
質問者

お礼

merlionXXさま 返信おくれまして申し訳ありません。 >deleteキーを押しても式が消えないようにしたい思っています。 シート保護しかないようですね。。。 VBAなら消えないものだと思っていました。 他の方法を含め検討してみたいと思います。 ありがとうございました。

その他の回答 (2)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

> VBAなら消えないものだと思っていました。 merlionXXです。 どうしてそうおもわれたのでしょう? ひょっとしてVBAのUndoのことを言っているのかな? それなら ActiveSheet.Range("G:G").FormulaR1C1 = "=RC[-3]*RC[-1]" で、式を挿入した後で標準モジュールではなく当該シートのシートモジュールの方に Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <> 7 Then Exit Sub With Application .EnableEvents = False .Undo .EnableEvents = True End With End Sub と入れてみてください。(順序をまちがわないように) そうすればシート保護しなくとも、G列に変更が加えられた場合はつねにUndoされ、もとの状態にもどります。

Turkey-R
質問者

お礼

merlionXXさま アドバイスありがとうございます。 undoという手があるのですね! なにぶんVBA初心者なもので質問内容もあやふやでした。 低レベルな質問で皆様のお時間を 割いていただき感謝しています。 一旦、質問は解決とさせていただきます。 ありがとうございました。

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

質問の表現が余分なことが多く、主旨がぼやけている。 VBAでセルに数式を入れても セルに直接数式を打ち込んでも DELETEキーを押せば式は消えます。 ーー >(標題)VBAで列に計算式を入れたい、は違ったことをいっている。 式を抹消や変更され無いようにしたい、 というのが質問の主旨ではないですか。 それならシートの保護しかない。 その回答は既に出ているので略。 ーー >sheet1のG列全体にVBAで数式を入れて、 >G列全体に式を入れたいと思っています。 など書く必要は無いでしょう。 これらは質問のメインテーマではないのでしょう。

Turkey-R
質問者

お礼

imogasiさま 返信おくれまして申し訳ありません。 主旨は列同士の数式で、 VBAなら消えないものだと思っていたために 二つを満たすものがあるのだとおもっていました。 他の方法を含め検討してみたいと思います。 ご指摘いただきありがとうございます。