大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、シートの保護を設定するには「.Protect」を使って、解除するには「.Unprotect」を使います。パスワードを設定したり解除するには、引数に「Password:=」を入力します。シート保護の設定や解除方法について、マスターしていきましょう。

はじめに

この記事では、シートの保護と解除をする方法について、ご紹介します。

シートの保護をするには「.Protect」を使います。シート保護の解除は「.Unprotect」になります。

パスワード付きで設定や解除をしたい場合は、引数に「PassWord:=」を使います。

保護シートをマクロから操作できるようにするには、一旦マクロを解除して操作するか、引数に「UserInterFaceOnly:=True」を使ってシートを保護するといいです。

シート保護の設定と解除する方法について、マスターしていきましょう。

では、シート保護の設定と解除する方法について、解説していきます。

この記事を読むメリット

  • シート保護の設定や解除、パスワードを設定する方法をマスターできます。

目次から見たい項目へ移動すると便利ですよ。

目次

シートの保護と解除

シートの保護と解除してみます。

シートの保護は「.Protect」で、シート保護の解除は「.Unprotect」を使います。

シートを保護する(.Protect)

「.Protect」を使って、シートを保護してみます。

シートを保護したい

シートを保護したいです

VBAコードをみてみます。

シートの保護をする

シートを保護するVBAコードです。

Sub TEST1()
  
  'シートを保護
  Sheets("Sheet1").Protect
  
End Sub

実行すると、シートを保護できます。

シートを保護できました

シートを保護できました。

シート保護を解除する(.UnProtect)

「.UnProtect」を使って、シート保護を解除してみます。

シートが保護されているシートを用意しました。

シートが保護されている状態

シートが保護されています

シート保護を解除してみます。

シートの保護を解除

シートの保護を解除するVBAコードです。

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」以外のセルは、セルロックのままなので、入力はできません。

「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

実行すると、マクロからの入力のみ有効にして、シートを保護できます。

マクロからの入力を有効にして、シート保護をしました

手動では入力できません。

シート保護の状態で、マクロから値を入力

では、VBAから値を入力してみます。

Sub TEST9()
  
  'マクロから値を入力してみる
  Sheets("Sheet1").Range("A1") = "ABC"
  
End Sub

シート保護している状態で、マクロから値を入力できます。

シート保護している状態で、マクロから値を入力できました

シート保護している状態で、マクロから値を入力できました。

おわりに

この記事では、シートの保護と解除をする方法について、ご紹介しました。

シートの保護をするには「.Protect」を使います。シート保護の解除は「.Unprotect」になります。

パスワード付きで設定や解除をしたい場合は、引数に「PassWord:=」を使います。

保護シートをマクロから操作できるようにするには、一旦マクロを解除して操作するか、引数に「UserInterFaceOnly:=True」を使ってシートを保護するといいです。

シート保護の設定と解除する方法について、マスターしていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す