ワークシート内の入力されているセルを保護する方法です。
普通にすれば空白セルを選択し、LockedパロパティをFalseにすればできますがそれでは結合セルは保護できません。
結合セルを保護するには空白セルを総当たりで調べ、結合セルで入力済みかどうか判定する必要があります。
入力されているセルを保護するマクロ
VBA入力画面
入力したコードです。
Sub 入力されているセルを保護()
On Error GoTo エラー処理
ActiveSheet.Unprotect
Cells.Select
Selection.Locked = True
Selection.SpecialCells(xlBlanks).Select
Selection.Locked = False
For Each r In Selection.SpecialCells(xlCellTypeBlanks)
If r.MergeCells = True And r.Value <> "" Then
r.Select
Selection.Locked = True
End If
Next
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Exit Sub
エラー処理:
MsgBox "保護実行中にエラーが発生しました。" + vbCrLf + Err.Description
End Sub
プログラムの説明
Subプロシージャの宣言Sub 入力されているセルを保護()
エラーが発生した場合は、エラー処理ラベルに移動します(エラーについては
エラー処理を参照してください)
On Error GoTo エラー処理
念のためシート保護を解除します
ActiveSheet.Unprotect
セル全体を選択します
Cells.Select
選択範囲の編集をロックします
Selection.Locked = True
空白のセルを選択します
Selection.SpecialCells(xlBlanks).Select
空白セルのロックを解除します
Selection.Locked = False
空白セルを総当たりでループします
For Each r In Selection.SpecialCells(xlCellTypeBlanks)
結合セルで入力されている場合
If r.MergeCells = True And r.Value <> "" Then
選択します
r.Select
編集をロックします
Selection.Locked = True
IF文の終了
End If
For Eachここまで
Next
保護を実行します
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
プロシージャの終了
Exit Sub
エラー ラベル
エラー処理:
エラーメッセージとエラー内容を表示します
MsgBox "保護実行中にエラーが発生しました。" + vbCrLf + Err.Description
プロシージャの終了
End Sub
ワークシートの入力されているセルを保護するマクロの実行画面
「入力されているセルを保護」マクロを実行します。
結合したセルを編集しようとすると、「変更しようとしているセルまたはグラフは保護されているため、読み取り専用となっています。保護されているセルまたはグラフを変更するには、[校閲]タブをクリックし、[変更]グループの[シート保護の解除]をクリックして保護を解除します。パスワードの入力を要求されることもあります。」とメッセージが表示され編集できなくなっています。
空白セルに入力すると、問題なく入力できました。
Excelマクロのサンプルファイル:
フリーダウンロード
Copyright (C) excel.usefulhp.com All rights reserved.