【VBA】シートの保護と解除、パスワード設定と判定【ProtectとUnprotectを使う】

嚯嚯go發表於2024-10-03

參考元:【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

相關文章