ワークシートが保護されているかどうかを判別する方法 |
Range オブジェクトには Locked プロパティがあり、値の設定も取得も可能なので「保護する」という動作も「保護されている」という状況判断もできるのですが、Sheet オブジェクトの場合、Protect/Unprotect メソッドなので「保護する」「保護を解除する」という動作しかできません。「現在アクティブなワークシートが保護されているかどうか」を判別する方法を考えているのですが、案が浮かびません。 |
ワークシートオブジェクトには以下のプロパティがあります。 ProtectDrawingObjects -> 描画オブジェクトの保護の状態 ProtectContents -> セルの保護の状態 ProtectScenarios -> シナリオの保護の状態 いづれも、 True -> 保護 False -> 非保護 となっています。 これらを使えば判断できます。 ただ、ProtectメソッドのUserInterfaceOnly引数の値は 取得できないようなのでVBAからセルの内容を変更するときは 常にこの引数の値をTrueにして再度Protectする必要があるかもしれません。 |