『VBAのチェンジイベントについて』(むぎ)
保護されているシートのA1〜C100の範囲内のセルに変更があった場合に、
変更があったセルのみにロックをかけていきたいのですが、最初のシート保護が外れません。
(シート保護のパスワードはかかっていません)
シート1のモジュールに↓のコードを書いたのですが、何が誤っているか教えて頂けますか。
Private Sub Worksheet_Change(Byval Target As Range)
Sheet(1).Unprotect
Dim r As Range
Set r = Intersect(Target,Range("A1:C100"))
If r Is Nothing then
Exit Sub
End if
Range(Target.Address).Locked = True
sheet(1).Protect
End Sub
< 使用 Excel:Excel2016、使用 OS:Windows11 >
コードを書いているシートは一番左に無いのかも知れません。 Meキーワードを使ってこう書くのがよいのでは?
Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range Set r = Intersect(Target, Range("A1:C100")) If r Is Nothing Then Exit Sub Me.Unprotect r.Locked = True '(*) Me.Protect End Sub
"A1:C100"以外にロックがオフになっているセルがあるかどうかに依存しますが、 一応 r としてみました。適宜修正して下さい。 (xyz) 2024/04/06(土) 07:32:13
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.