※ ChatGPTを利用し、要約された質問です(原文:エクセル:常に保護をかけるがマクロは有効)
エクセルでマクロを使用する際に注意すべきポイント
このQ&Aのポイント
エクセルでマクロを使用する際、保護設定とマクロの有効化について注意が必要です。
マクロを記録する際に保護設定を行った場合、UserInterfaceOnly:=Trueを追加することでマクロからの変更が有効となります。
保護設定をマクロから変更するには、ワークシートに直接書き込む方法がありますが、Worksheet_SelectionChangeイベントでは動作しないことに注意が必要です。
シートに、マクロ実行時以外保護をかけておきたいです。
(マクロで、ロックをかけたセルを操作したいので)
「マクロを記録する」で保護をかける操作を記録してもらったところ、
「許可する操作」は以下の記述で実行されるようです。
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _
AllowInsertingColumns:=True, AllowInsertingRows:=True, _
AllowDeletingColumns:=True, AllowDeletingRows:=True
ここに「マクロからの変更は有効」の UserInterfaceOnly:=True を加えた以下のコードは、
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, _
AllowInsertingColumns:=True, AllowInsertingRows:=True, _
AllowDeletingColumns:=True, AllowDeletingRows:=True, UserInterfaceOnly:=True
どのSubに記述すればよいでしょうか。
ワークシートに直接書込むんですよね?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
に書いてみたら一時期正常に動いていたと思うのですが、どうやら勘違いだったみたいです。
ActiveもChangeも違うようなのですが(なぜかどちらも一時は動いたような…)。
お礼
回答ありがとうございます。 Private Sub workbook_Open() に書込んでみたところ、動作を確認しました。 ありがとうございます。