- ベストアンサー
VBAで列に計算式を入れたい
お世話になります。 sheet1のG列全体にVBAで数式を入れて、 deleteキーを押しても式が消えないようにしたい思っています。 G1=D1*F1 ~ G65536=D65536*F65536(G列=D列*F列) のように同じ行同士の計算で、 G列全体に式を入れたいと思っています。 よい方法ご存知の方いらっしゃいましたら 宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> deleteキーを押しても式が消えないようにしたい シート保護でいいんですよね? Sub test01() With ActiveSheet .Range("G:G").Locked = True .Range("G:G").FormulaR1C1 = "=RC[-3]*RC[-1]" .Protect End With End Sub
その他の回答 (2)
- merlionXX
- ベストアンサー率48% (1930/4007)
> 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され、もとの状態にもどります。
お礼
merlionXXさま アドバイスありがとうございます。 undoという手があるのですね! なにぶんVBA初心者なもので質問内容もあやふやでした。 低レベルな質問で皆様のお時間を 割いていただき感謝しています。 一旦、質問は解決とさせていただきます。 ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17070)
質問の表現が余分なことが多く、主旨がぼやけている。 VBAでセルに数式を入れても セルに直接数式を打ち込んでも DELETEキーを押せば式は消えます。 ーー >(標題)VBAで列に計算式を入れたい、は違ったことをいっている。 式を抹消や変更され無いようにしたい、 というのが質問の主旨ではないですか。 それならシートの保護しかない。 その回答は既に出ているので略。 ーー >sheet1のG列全体にVBAで数式を入れて、 >G列全体に式を入れたいと思っています。 など書く必要は無いでしょう。 これらは質問のメインテーマではないのでしょう。
お礼
imogasiさま 返信おくれまして申し訳ありません。 主旨は列同士の数式で、 VBAなら消えないものだと思っていたために 二つを満たすものがあるのだとおもっていました。 他の方法を含め検討してみたいと思います。 ご指摘いただきありがとうございます。
お礼
merlionXXさま 返信おくれまして申し訳ありません。 >deleteキーを押しても式が消えないようにしたい思っています。 シート保護しかないようですね。。。 VBAなら消えないものだと思っていました。 他の方法を含め検討してみたいと思います。 ありがとうございました。