【发布时间】:2017-08-31 21:17:19
【问题描述】:
我有一个让我的员工填写的工作表,并且我计算了要锁定的单元格,这样他们就无法更改它们。我已经选择了单元格和选定的属性,并确保选中了“锁定”复选框。当我保护工作表/工作簿时,“导出到 csv”宏按钮停止工作。为了使宏能够完成,我将此 VB 代码插入到工作簿中:
Private Sub Workbook_Open()
Dim wSheet As Worksheet
For Each wSheet In Worksheets
wSheet.Protect Password:="password", _
UserInterFaceOnly:=True
Next wSheet
End Sub
这行得通,但有一个意想不到的副作用,即即使我的锁定公式被锁定,也可以对其进行编辑。只有包含非公式值的单元格保持锁定状态。允许宏但仍锁定公式单元格的正确方法是什么?
【问题讨论】:
-
您可能必须在公式块上
.Value = Value并在您希望根据新数据重新计算单元格时使用.Formula = "..."重新声明公式。事件子 Worksheet_Calculate 被视为“宏”。 -
@Jeeped 如果更改宏末尾的
UserInterFaceOnly会怎样。请看看我的答案,如果这有效,请告诉我。我现在无法访问 excel 来测试它。 -
@Masoud - 就在我的脑海中,Workbook_Open 是 ThisWorkbook 代码表私有的。我不确定你是否可以调用它。
-
@Jeeped 你是对的。它应该是公开的。但除此之外,将
UserInterFaceOnly设置为 true 会解决问题吗? -
@Masoud - 好吧,问题是工作表上的值正在改变影响公式的结果,并且 OP 希望锁定公式的结果。我认为如果不将公式恢复为静态值并在他/她需要重新计算时重新声明公式,就无法做到这一点。