1

Excel ワークシートの保護ステータスをそのワークシートのセルに渡すことができるかどうかについて知りたいです。例えば

  • Sheet1 は編集のためにロックされています...セルは「ロック済み」A1と表示されるようにプログラムされます
  • Sheet1 はロック解除されています...セルA1"unlocked" と表示されます。

シート上のボタンは、ワークシートの保護のオンとオフを切り替えるために使用されます。

workbook_open イベントを使用して開くと、シートがロックされます。

これは、使用時に数式がすべて台無しになることを望まないが、完全なアクセスが必要になる可能性があるシート用です。これは、ユーザーが「ロック解除」モードにあることを思い出させるものなので、特に注意してください。

VBAを使用することは当然の結論ですか?

私は VBA 初心者ですが、この問題の解決策としてコードを使用してもかまいません。

ご意見やご提案は大歓迎です

4

2 に答える 2

1

Sheet1 の ActiveX ボタンでコードを使用して、これを簡単に行うことができます。

Const strPAss = "test"

Private Sub CommandButton1_Click()
 If ActiveSheet.ProtectContents Then
 ActiveSheet.Unprotect strPAss
 [a1].Value = "unlocked"
 Else
 [a1].Value = "locked"
 ActiveSheet.Protect strPAss
 End If
End Sub
于 2013-03-20T05:06:56.220 に答える
1

これをワークシートのコード モジュールに配置すると、ステータス バーにリマインダーが配置されます (これにより、セル A1 にステータスを書き込むためにシートをロック/ロック解除する必要がなくなります)。

これを Sheet1 コード モジュールに入れます。マクロは、sheet1 がアクティブになるたびに実行されます。

Private Sub Worksheet_Activate()
If ActiveSheet.ProtectContents then
    Application.StatusBar = "This sheet is protected"
Else:
    Application.StatusBar = "This sheet is unprotected"
End If
End Sub

Private Sub Worksheet_Deactivate()
    Application.StatusBar = False
End Sub

ワークシートを保護/保護解除するには、これを Insert>Module に追加します。 次に、これらのマクロを個別のコマンド ボタンに添付するか、[開発] > [マクロ] リボンから実行します。

Const myPassword as String = "password" '<-- replace "password" with your password

Sub Sht1Protect()
    Sheet1.Protect myPassword
End Sub

Sub Sht1Unprotect()
    Sheet1.Unprotect myPassword
End Sub

ファイルを閉じたときにシートが常に保護されるようにするには、これを Workbook コード モジュールに挿入します。

Private Sub Workbook_Close()
    Sht1Protect
End Sub

ファイルを保存するか保存しないかなどを制御するために、追加の処理が必要になる場合があります。

于 2013-03-20T02:42:47.623 に答える