電子書籍の厳選無料作品が豊富!

お世話になります。

sheet1のG列全体にVBAで数式を入れて、
deleteキーを押しても式が消えないようにしたい思っています。

G1=D1*F1 ~ G65536=D65536*F65536(G列=D列*F列)
のように同じ行同士の計算で、
G列全体に式を入れたいと思っています。

よい方法ご存知の方いらっしゃいましたら
宜しくお願いします。

A 回答 (3件)

> deleteキーを押しても式が消えないようにしたい



シート保護でいいんですよね?

Sub test01()
With ActiveSheet
.Range("G:G").Locked = True
.Range("G:G").FormulaR1C1 = "=RC[-3]*RC[-1]"
.Protect
End With
End Sub
    • good
    • 0
この回答へのお礼

merlionXXさま

返信おくれまして申し訳ありません。

>deleteキーを押しても式が消えないようにしたい思っています。
シート保護しかないようですね。。。
VBAなら消えないものだと思っていました。

他の方法を含め検討してみたいと思います。

ありがとうございました。

お礼日時:2008/11/03 15:50

> 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され、もとの状態にもどります。
    • good
    • 0
この回答へのお礼

merlionXXさま

アドバイスありがとうございます。

undoという手があるのですね!
なにぶんVBA初心者なもので質問内容もあやふやでした。

低レベルな質問で皆様のお時間を
割いていただき感謝しています。

一旦、質問は解決とさせていただきます。

ありがとうございました。

お礼日時:2008/11/03 23:41

質問の表現が余分なことが多く、主旨がぼやけている。


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

imogasiさま

返信おくれまして申し訳ありません。

主旨は列同士の数式で、
VBAなら消えないものだと思っていたために
二つを満たすものがあるのだとおもっていました。

他の方法を含め検討してみたいと思います。

ご指摘いただきありがとうございます。

お礼日時:2008/11/03 15:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!