【VBA】ワークシートを保護する

Excel VBA すべて

エクセルVBAでシート保護をして特定のセルのロックを解除しワークシートの入力したいところだけ編集可能にする方法を紹介します。

2024年11月に投稿した「Excel VBAで商品名をドロップダウンリストで入力できるようにする」で作成した注文書を例にワークシートの保護をしたいと思います。

取引先会社名「セルA3」、商品名と数量「セル範囲A8からB17」、発行日「セルD4」、発注番号「セルD5」は入力できるようにして、それ以外のセルは入力できないように設定を行います。

VBE(Visual Basic Editor)を起動して「挿入」→「標準モジュール」を選択して標準モジュールを作成します、作成した標準モジュールのModule1に下のコードをコピーして貼り付けます。

Sub シートの保護()

Cells.Select 'ワークシート全体のセルを選択する。
Selection.Locked = True '選択したセルをロックします。
Range("A3,A8:B17,D4,D5").Select '編集可能にしたいセルを選択します。
Selection.Locked = False '現在選択されているセル範囲のロックを解除して編集できるようにします。
Selection.FormulaHidden = False '選択されているセル範囲の数式を表示します。
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True 'Excelシート全体を保護します。
ActiveSheet.EnableSelection = xlUnlockedCells 'ロックされたセル範囲の選択をできないようにする。
Range("A3").Select

End Sub
今回のポイント

シートの保護をする前に全体のセルを選択してセルの書式設定の保護タブのロックに☑チェックを入れる作業はプログラムに組み込んであります。( ^ᴗ^♪

シートの保護のプログロムの実行します

エクセルのシート1を表示して「開発タブ」 →「マクロの表示」ボタン → マクロ名(シートの保護)を選択 → [実行] ボタンを押すとプログラムを実行できます。

これで入力したいセルだけ編集可能になり他のセルは選択も編集もできないようになりました。

シート保護解除したいときは「校閲」タブで「シート保護の解除」をします。

VBAを使うと複雑な操作も一瞬で行えてとても楽ができるのでぜひご活用ください。(•ᴗ•♪

コメント