参考元:【VBA】シートの保護と解除、パスワード設定と判定【ProtectとUnprotectを使う】
https://daitaideit.com/vba-sheet-protect/
シートの保護をする
Sub TEST1()
'シートを保護
Sheets("Sheet1").Protect
End Sub
シート保護を解除する(.UnProtect)
Sub TEST2()
'シートの保護を解除
Sheets("Sheet1").Unprotect
End Sub
シートの保護のパスワード設定と解除と判定
パスワードを設定してシート保護
Sub TEST3()
'パスワードを設定して、シートを保護
Sheets("Sheet1").Protect Password:=123
End Sub
パスワード付きシート保護を解除
Sub TEST4()
'パスワード付きのシート保護を解除
Sheets("Sheet1").Unprotect Password:=123
End Sub
シート保護でパスワード設定の有無を判定
「Password:=""」で、保護を解除して、エラーが発生する場合は「パスワードあり」、エラーが発生しない場合は「パスワードなし」と判定します。
Sub TEST5()
On Error Resume Next
'空欄のパスワードで、保護を解除しようとしてみる
Sheets("Sheet1").Unprotect Password:=""
'エラーが出る場合は、パスワードの設定あり
If Err.Number <> 0 Then
Debug.Print "パスワードが設定されています"
'エラーなしは、パスワード設定なし
Else
Debug.Print "パスワードは設定されていません"
End If
On Error GoTo 0
End Sub
一部のセルのロックを解除してシート保護をする
セルロックの解除は「セル範囲.Locked = False」を使います。
※1回下記コードを実行した後、再実行できない。
セルロック再度設定するように、Sheets("Sheet1").Unprotect解除する必要。
Sub TEST6()
'A1のセルロックを解除
Sheets("Sheet1").Range("A1").Locked = False
'シートを保護
Sheets("Sheet1").Protect
'A1に値を入力
Sheets("Sheet1").Range("A1") = "ABC"
End Sub
「UserInterFaceOnly:=True」を使う
マクロからの入力を有効にして、シート保護
Sub TEST8()
'マクロからの操作は許可して、シートをロック
Sheets("Sheet1").Protect UserInterFaceOnly:=True
End Sub
シート保護の状態で、マクロから値を入力
Sub TEST9()
'マクロから値を入力してみる
Sheets("Sheet1").Range("A1") = "ABC"
End Sub
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!