如何locking包含公式的单元格,但仍然允许macros运行?

我有一个工作表,我让我的员工填写,我已经计算了要locking的单元格,所以他们不能更改它们。 我已经select了单元格和选定的属性,并确保选中“locking”checkbox。 当我保护工作表/工作簿“导出到CSV”macrosbutton停止工作。 为了使macros能够完成,我将这个VB代码插入到工作簿中:

Private Sub Workbook_Open() Dim wSheet As Worksheet For Each wSheet In Worksheets wSheet.Protect Password:="password", _ UserInterFaceOnly:=True Next wSheet End Sub 

这工作,但有意想不到的副作用,即使他们被locking,我的locking公式即可被编辑。 只有包含非公式值的单元格保持locking状态。 什么是允许macros但仍locking公式单元格的正确方法?

我的解决scheme是locking整个工作簿和工作表,然后编码到VBbutton禁用锁,然后重新启用macros。 像这样:

 Sub MyMacro() Sheet1.Unprotect Password:="password" 'insert code here Sheet1.Protect Password:="password" End Sub 

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