如何锁定包含公式但仍允许宏工作的单元格?

Aar*_*tin 5 excel vba excel-vba

我有一个工作表,我让我的员工填写,我已经计算了我想锁定的单元格,所以他们无法更改它们.我已选择单元格和选定的属性,并确保选中"锁定"复选框.当我保护工作表/工作簿时,"导出到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
Run Code Online (Sandbox Code Playgroud)

这有效但却产生了意想不到的副作用,即使锁定的公式被锁定,我也可以对其进行编辑.只有包含非公式值的单元格才会被锁定.什么是允许宏但仍锁定公式单元格的正确方法?

Aar*_*tin 0

我的解决方案是锁定整个工作簿和工作表,然后将代码写入 VB 按钮以禁用锁定,然后重新启用宏。就像这样:

Sub MyMacro()

Sheet1.Unprotect Password:="password"

    'insert code here

    Sheet1.Protect Password:="password"

End Sub
Run Code Online (Sandbox Code Playgroud)

然后我删除了我的 Workbook_Open 代码。