アプリ版:「スタンプのみでお礼する」機能のリリースについて

QNO.2915892を参考にさせていただき、マクロを設定しました。
正常に作動したのですが、その後シートの一部が変更できないように、ロックをかけることになりました。
するとロックのかかっている状態だと、このコードでは日付が更新されませんでした。

そこで、ロックのかかっていないセルのデータを更新した時だけ、
任意のセルに今日の日付(更新日)が自動で入るようにしたいです。
つまりエクセルを開いただけで、データを修正しなかったら日付は変わらないようにしたいです。

この場合はこのコードに何を足したり、どこを変更したらよいのでしょうか?
もしくは全く別のものになるのでしょうか?
別のものであれば、それを教えていただけると助かります。
コードの意味はほとんどわかっていません。。。

*****以下今使っているコードです********

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Range("B1") = Format(Date, "yyyy/m/d")
Application.EnableEvents = True
End Sub

*********************以上****

どなたかよろしくお願いします。

A 回答 (2件)

#01です


>パスワードなしで保護する方法が私にはわかりません。。。
シートの保護の際、パスワードに何も入力しなければパスワード無しになります

#01で「ただしパスワードがないことが前提」と書いたのは「パスワード指定してあると動かない」という意味ではありません。Unprotectメソッドが実行されるときにパスワード要求が出てきて、ちゃんと保護が解除されるはずです。でも再度保護するときに
ActiveSheet.Protect password:="a" ,DrawingObjects:=True, Contents:=True, Scenarios:=True
のようにマクロ中にパスワードを書いてしまうと、パスワードの意味がなくなるので、そのように書いただけです。

従ってパスワードのあるなしは動作に関係しません。
>シートの保護を一旦解除し、いくつかのセルを修正しましたが、日付が更新されませんでした。
とのことですが、マクロは動いていますか? 別のマクロでEnableEventが発生しないようにされているようなことはないでしょうか。

VBE画面でCtrl+Gでイミディエイトペインを開いて、以下のコマンドを入力しEnterしてみてください。もしEnableEventが原因ならこれで直るかもしれません。
Application.EnableEvents=True
    • good
    • 0
この回答へのお礼

お礼が遅くなり、申し訳ありません。

教えていただいた通り入力しても、できるシートとできないシートがあり、
ややこしくなってしまってそれぞれどの条件の時にどうなったかというのが把握できませんでした。

そこでもう一度元のエクセルファイルをコピーし直し、最初に教えていただいたコードを1シートずつ入力し、
パスワードなしでシートを保護しました。
そして、以下二つのパターンで試してみました。

(1)全てのセルにロックをかけて、修正する度に保護を解除する

(2)一部のセルのみにロックをかけて、ロックされていないセルを修正する

おかげさまで、どちらもうまくいきました。

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

お礼日時:2007/06/04 12:07

日付をセルに書き込む前にシートの保護を解除し、書き込み後に保護をかける方法で良ければ以下になります(ただしパスワードがないことが前提)



Private Sub Worksheet_Change(ByVal Target As Range)
 Application.EnableEvents = False
 ActiveSheet.Unprotect
 Range("B1") = Format(Date, "yyyy/m/d")
 ActiveSheet.Protect DrawingObjects:=True, _
   Contents:=True, Scenarios:=True
 Application.EnableEvents = True
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。

現在、シートの保護のためにパスワードを設定しています。
他人が間違って書き換えてしまうと困る部分もあるからです。
知識が足りなくて申し訳ありませんが、むしろパスワードなしで保護する方法が私にはわかりません。。。

シートの保護を一旦解除し、いくつかのセルを修正しましたが、日付が更新されませんでした。
一度でもパスワードを設定してしまうとダメなんでしょうか?

もう少し回答を待ちたいと思います。

お礼日時:2007/05/30 17:23

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