将Excel工作表的保护状态传递到单元格

x33g5p2x  于 2023-04-22  发布在  其他
关注(0)|答案(2)|浏览(124)

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

  • Sheet1已锁定编辑...单元格A1将被编程为 “locked”
  • Sheet1已解锁...单元格A1将显示 “unlocked”

工作表上的一个按钮用于打开和关闭工作表保护。
我的工作表在使用workbook_open事件打开时将被锁定。
这是一个工作表,我不希望公式在使用时被弄得一团糟,但可能需要完全访问。它更多的是提醒用户,他们处于“解锁”模式,所以要格外小心。
使用VBA是否已成定局?
我是一个VBA新手,但不介意使用代码作为解决方案
欢迎任何想法或建议

8ftvxx2r

8ftvxx2r1#

您可以使用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
yquaqz18

yquaqz182#

将其放入工作表的代码模块中,该模块将在状态栏中放置提醒(这避免了为了将状态写入单元格A1而需要锁定/解锁工作表)。

**将此放入Sheet 1代码模块中。**每次sheet 1被激活时,宏都会执行。

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

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

相关问题