1

我很好奇是否可以将excel工作表的保护状态传递给该工作表的单元格。例如

  • Sheet1 被锁定以进行编辑...单元格A1将被编程为“锁定”
  • Sheet1 已解锁...单元格A1会说"unlocked"

工作表上的按钮将用于打开和关闭工作表保护。

我的工作表将在使用 workbook_open 事件打开时被锁定。

这是一张我不希望公式在使用时全部搞砸但可能需要完全访问权限的工作表。它更多地提醒用户他们处于“解锁”模式,因此要格外小心。

使用 VBA 已成定局吗?

我是 VBA 菜鸟,但不介意使用代码作为解决方案

欢迎任何想法或建议

4

2 回答 2

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

要保护/取消保护工作表,您可以将其添加到“插入”>“模块”。 然后将这些宏附加到单独的命令按钮,或从开发人员>宏功能区运行。

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

Sub Sht1Protect()
    Sheet1.Protect myPassword
End Sub

Sub Sht1Unprotect()
    Sheet1.Unprotect myPassword
End Sub

为确保关闭文件时工作表始终受到保护,请将其插入工作簿代码模块

Private Sub Workbook_Close()
    Sht1Protect
End Sub

您可能需要额外的处理来控制文件是否保存/不保存等。

于 2013-03-20T02:42:47.623 回答
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 回答