在受保护的工作表中启用宏

时间:2013-01-16 20:14:35

标签: excel excel-vba password-protection vba

我为工作表编写了一个代码,每次更改数字时,如果varaince大于10%,20%或+ 20%,它会改变颜色。所以我在“General”和“Private Sub Selection_Worksheet”上都使用了宏代码,这样每当单元格的数量发生变化时,它就会改变颜色。

我已经锁定并隐藏了一些显示公式的单元格,并编写了代码

    Sheets("Financials").Protect Password:="Ottawa", UserInterFaceOnly:=True

在General和“Private Sub Selection_Worksheet”上,每次点击任何单元格时都会给我一个运行时错误。

如何解决此问题?我只希望他们使用某些单元格,并在保护和隐藏时仍然运行宏。

谢谢,

丹尼尔

1 个答案:

答案 0 :(得分:0)

遗憾的是,使用UserInterface:=True进行保护有点误导:如果在保存后重新打开文件,则该状态会丢失,工作表将再次受到完全保护。

因此,最好更改代码以处理保护:


Private Const cStrPwd as String = "Ottawa"

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'Your conditions to check if code should run go here, e.g.:
    If Application.Intersect(Target, Me.Range("A1:B10")) Is Nothing Or _
        Me.Range("B2") < 0.2 Then Exit Sub

    Me.Unprotect Password:=cStrPwd

    'Your code here
    MsgBox "You've successfully done something! Nice job, mate!"

    Me.Protect Password:=cStrPwd
End Sub