将Excel工作表的保护状态传递给单元格
问题描述:
我很好奇是否可以将Excel工作表的保护状态传递给该工作表的单元格。 例如将Excel工作表的保护状态传递给单元格
- Sheet1中被锁定以进行编辑...细胞
A1
进行编程,说“锁定” - Sheet1中解锁...细胞
A1
会说“解锁”。
工作表上的按钮将用于打开和关闭工作表保护。
使用workbook_open事件打开时,我的工作表将被锁定。
这是用于表格,我不希望公式在使用时被全部取消,但可能需要完全访问。它更多地提醒用户他们处于“解锁”模式,因此要格外小心。
使用VBA已成定局吗?
我是VBA小白,但不介意使用代码作为这个
任何想法的解决方案或建议,欢迎
答
你可以使用代码在工作表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
答
工作表的代码模块将这个,这将放置一个提醒在状态栏(这可以避免需要锁定/解锁工作表,以便将状态写入单元格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
保护/解除保护,你可以添加这一个插入>模块工作表。然后附加这些宏以分离命令按钮,或者从Developer> Macros功能区运行。
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
您可能需要额外的处理,以控制该文件是否被保存/未插入此保存等
谢谢,brettdj - 这可以满足我的要求。使用activex控件对使用它们的VBA代码有任何影响吗? – JohnM 2013-03-20 22:24:58