はじめに
今回は、シートが保護されているかを判定する方法について解説します。
例えば、シートが保護状態のシートに対して、Protectメソッドを使用するとエラーとなります。
そういったエラーを未然に防ぐために、シートの保護状態を確認する方法をご紹介します。
この記事を読むメリット
- シートが保護されているかを判定する方法が分かります。
- コピペで使える実践的なサンプルコードを掲載しています。
基本情報
ProtectContentsプロパティ
シートが保護されているかを判定するには、WorksheetオブジェクトのProtectContentsプロパティを使用します。
構文
Worksheetオブジェクト.ProtectContents
戻り値
- True:保護されている
- False:保護されていない
りゅう
使用例として、シートを保護するProtectメソッドはシートを保護されている状態で実行するとエラーが発生します。
シートを保護する直前で判定するのが良いでしょう。
サンプルコード
シートが保護されているかを判定する
シートが保護されているかを判定するサンプルコードです。
シートの保護状況を確認のうえ、メッセージボックスを表示します。
サンプルコード
Public Sub checkSheetProtect()
Dim targetSheet As Worksheet ' チェック対象シート
' 1番目のシートを取得する
Set targetSheet = ThisWorkbook.Worksheets(1)
' シートの保護判定
If targetSheet.ProtectContents Then
MsgBox targetSheet.Name & "シートは保護されています。"
Else
MsgBox targetSheet.Name & "シートは保護されていません。"
End If
End Sub
シートを保護する前に判定する
既に保護されているシートに対して、シートを保護する「Protectメソッド」を使用する場合はエラーとなってしまいます。
エラーを防ぐため、事前に判定するサンプルコードを示します。
サンプルコード
Public Sub execSheetProtect()
Dim targetSheet As Worksheet ' 保護対象シート
' 1番目のシートを取得する
Set targetSheet = ThisWorkbook.Worksheets(1)
' シートの保護判定
If Not targetSheet.ProtectContents Then
' シートが保護されていない場合は保護する
targetSheet.Protect
End If
End Sub
シートの保護が解除されたかを判定する
シートの保護状態を解除する「UnProtectメソッド」が成功したかどうかを判定するサンプルコードです。
サンプルコード
Public Sub checkSheetUnProtect()
Dim targetSheet As Worksheet ' 保護解除対象シート
' 1番目のシートを取得する
Set targetSheet = ThisWorkbook.Worksheets(1)
' シートの保護解除
targetSheet.Unprotect
' シートの保護判定
If Not targetSheet.ProtectContents Then
' シートが保護解除されている場合
MsgBox "シートの保護が解除されました。"
End If
End Sub
最後に
今回は、シートが保護されているかを判定する方法について解説しました。
エラーを未然に防ぐためにも、ご活用いただければと思います。
本記事が皆さんのお力になれば幸いです!
コメント