大体でIT
大体でIT
2022/6/25
Excel VBAで、シートの保護を設定するには「.Protect」を使って、解除するには「.Unprotect」を使います。パスワードを設定したり解除するには、引数に「Password:=」を入力します。シート保護の設定や解除方法について、マスターしていきましょう。
この記事では、シートの保護と解除をする方法について、ご紹介します。
シートの保護をするには「.Protect」を使います。シート保護の解除は「.Unprotect」になります。
パスワード付きで設定や解除をしたい場合は、引数に「PassWord:=」を使います。
保護シートをマクロから操作できるようにするには、一旦マクロを解除して操作するか、引数に「UserInterFaceOnly:=True」を使ってシートを保護するといいです。
シート保護の設定と解除する方法について、マスターしていきましょう。
では、シート保護の設定と解除する方法について、解説していきます。
シート保護の設定や解除、パスワードを設定する方法をマスターできます。
シートの保護は「.Protect」で、シート保護の解除は「.Unprotect」を使います。
「.Protect」を使って、シートを保護してみます。
シートを保護したい
シートの保護をする
Sub TEST1()
'シートを保護
Sheets("Sheet1").Protect
End Sub
「.UnProtect」を使って、シート保護を解除してみます。
シートが保護されている状態
シートの保護を解除
Sub TEST2()
'シートの保護を解除
Sheets("Sheet1").Unprotect
End Sub
実行すると、シートの保護を解除して、値を入力できます。
シートの保護のパスワード設定と解除と判定をしてみます。
パスワードの設定は引数に「Password:=」を使います。
パスワードの判定は、「Password:=""」でパスワードを解除したときに発生するエラーを利用して、パスワードが設定されているかの判定をします。
パスワードを設定して、シートを保護するVBAコードです。
Sub TEST3()
'パスワードを設定して、シートを保護
Sheets("Sheet1").Protect Password:=123
End Sub
実行すると、パスワードを設定して、シートを保護できます。
シート保護を解除してみる
パスワードを設定してシート保護できた
パスワード付きのシート保護の状態
パスワードを解除して、シート保護を解除
パスワード付きのシート保護を解除するVBAコードです。
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」を使います。
デフォルトで、すべてのセルはロック設定となっています。
デフォルトでセルはロック状態
なので、セルロックを解除してから、シートを解除すると、一部のセルを入力できる状態でシートを保護することができます。
一部のセルのロックを解除してシートを保護するVBAコードです。
Sub TEST6()
'A1のセルロックを解除
Sheets("Sheet1").Range("A1").Locked = False
'シートを保護
Sheets("Sheet1").Protect
'A1に値を入力
Sheets("Sheet1").Range("A1") = "ABC"
End Sub
実行すると、「A1」のセルロックのみを解除して、シートを保護して、値を入力できます。
「A1」のみは入力できる
「A1」のセルロックのみを解除して、シートを保護して、値を入力できました。
「A1」以外のセルは、セルロックのままなので、入力はできません。
「A1」以外は入力できない
保護シートをマクロから操作できるようにしてみます。
やり方は2つあって、「一旦、シートの保護を解除」する方法と、「マクロからは入力できる状態でシートを保護」する方法があります。
シート保護を解除して、値を入力した後に、最後にシート保護してみます。
シート保護している状態
シート保護を解除して、値を入力できるようにしてみます。
一旦、シート保護を解除して入力
一旦、シート保護を解除して、値を入力するVBAコードです。
Sub TEST7()
'シート保護を解除
Sheets("Sheet1").Unprotect
'A1に値を入力
Sheets("Sheet1").Range("A1") = "ABC"
'シートを保護する
Sheets("Sheet1").Protect
End Sub
実行すると、一旦シート保護を解除して、値を入力できます。
「UserInterFaceOnly:=True」を使う
保護したシートに値を入力するもう一つの方法を解説します。
やり方としては、シート保護する際に、引数に「UserInterFaseOnly:=True」を入力する方法になります。
マクロからの入力を有効にして、シート保護
マクロからの入力を有効にして、シートを保護するVBAコードです。
Sub TEST8()
'マクロからの操作は許可して、シートをロック
Sheets("Sheet1").Protect UserInterFaceOnly:=True
End Sub
実行すると、マクロからの入力のみ有効にして、シートを保護できます。
シート保護の状態で、マクロから値を入力
Sub TEST9()
'マクロから値を入力してみる
Sheets("Sheet1").Range("A1") = "ABC"
End Sub
シート保護している状態で、マクロから値を入力できます。
シート保護している状態で、マクロから値を入力できました。
この記事では、シートの保護と解除をする方法について、ご紹介しました。
シートの保護をするには「.Protect」を使います。シート保護の解除は「.Unprotect」になります。
パスワード付きで設定や解除をしたい場合は、引数に「PassWord:=」を使います。
保護シートをマクロから操作できるようにするには、一旦マクロを解除して操作するか、引数に「UserInterFaceOnly:=True」を使ってシートを保護するといいです。
シート保護の設定と解除する方法について、マスターしていきましょう。
参考になればと思います。最後までご覧くださいまして、ありがとうございました。