• ベストアンサー

エクセルのセル参照で保護をかける方法を教えてください

エクセルのセルに何か入力されたら一部の範囲に保護がかかるようにしたいのですが、また入力されたものを削除すれば保護が解除できるようにもしたいのです。だれか教えてください(できればサンプルを乗せてくれると助かります) よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

A1セルに何か入力されたらB1:H1の範囲に保護がかかるようにしたサンプル例です。 シート名の部分を右クリックして「コードの表示」で以下の部分をコピー貼り付けしてみてください。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$A$1" Then If Target.Value = "" Then Range("B1:H1").Locked = True Else Range("B1:H1").Locked = False End If End If End Sub

damashii
質問者

お礼

MackyNo1さん ありがとうございます サンプル例大変助かりました。 また何かありましたらよろしくお願いします。

damashii
質問者

補足

自分なりに作ってみましたがうまくいきません どなたか添削してください。よろしくお願いします。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row < 8 Or Target.Row > 267 Then Exit Sub If Target.Column <> 18 Then Exit Sub If Target.Value = "完了" Then Application.EnableEvents = False ActiveSheet.Unprotect Password:="abc" ActiveCell.Offset(0, -15).Range("A1").Select Selection.Locked = True Selection.FormulaHidden = False ActiveCell.Offset(0, 2).Range("A1:C1").Select Selection.Locked = True Selection.FormulaHidden = False ActiveCell.Offset(0, 4).Range("A1:B1").Select Selection.Locked = True Selection.FormulaHidden = False ActiveCell.Offset(0, 3).Range("A1:C1").Select Selection.Locked = True Selection.FormulaHidden = False ActiveCell.Offset(0, 4).Range("A1").Select Selection.Locked = True Selection.FormulaHidden = False ActiveCell.Offset(0, 2).Range("A1").Select ActiveSheet.Protect Password:="abc" Else ActiveSheet.Unprotect Password:="abc" ActiveCell.Offset(0, -15).Range("A1").Select Selection.Locked = False Selection.FormulaHidden = True ActiveCell.Offset(0, 2).Range("A1:C1").Select Selection.Locked = False Selection.FormulaHidden = True ActiveCell.Offset(0, 4).Range("A1:B1").Select Selection.Locked = False Selection.FormulaHidden = True ActiveCell.Offset(0, 3).Range("A1:C1").Select Selection.Locked = False Selection.FormulaHidden = True ActiveCell.Offset(0, 4).Range("A1").Select Selection.Locked = False Selection.FormulaHidden = True ActiveCell.Offset(0, 2).Range("A1").Select ActiveSheet.Protect Password:="abc" End If Application.EnableEvents = True End Sub

その他の回答 (2)

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.2

ああ、忘れてました ロックもどきを解除するには、A1セルの1を削除すればOK

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.1

A1セルを選択する → データ → 入力規則 → 設定 → 入力値の種類をユーザー設定にする → 数式に =IF($A$1=1,,A1) と入力 → OK → A1セルをコピーする これで A1セルとコピーされたセルは、A1セルに1が入力されると編集ができなくなります (A1セルには1を入力することができませんので、どこかに1を入力しておき、それをコピーして貼り付ける) あくまでも一例です

damashii
質問者

お礼

ありがとうございます VB以外で出来る方法があったんですね ですが、入力規則をリストで使ってあるので他の方法があれば助かります 勝手言って申し訳ありません、参考にさせていただきます。

関連するQ&A