VBA for Excel:解锁受保护工作表中的单元格,同时允许VBA编辑它们

时间:2015-12-24 01:24:21

标签: excel vba excel-vba

我有一张受保护的工作表("练习选择")所有单元格都被锁定,除了两个。

假设未锁定的单元格是A1和A2,它们是合并的。

我想要做的是,当单元格A1和A2的值为" Plank(已实现)" (你可以写它,因为它解锁),然后单元格B1和B2(也合并)将被解锁。现在你有四个细胞解锁了。如果你写的东西除了" Plank(已实现)"在单元格A1和A2中,单元格B1和B2仍将被锁定,直到您正确写入并运行宏。

有办法吗?该宏名为" UnlockPushup"。请注意,在标题中我写了,同时仍然允许VBA编辑它们,因为如果" Plank(已实现)"的值,新的未锁定单元格将被锁定。改变了。

我有这个宏,但我还没有测试它,我认为它不会起作用。任何enter code here想法?

    Sub UnlockPushup
       If Worksheets("Exercise Selection").Range("A1:A2").Value >= "Plank (achieved)" Then
             ActiveSheet.Unprotect Password:="hardestpassword"
             Worksheets("Exercise Selection").Range("B1:B2").Locked = False
             ActiveSheet.Protect Password:="hardestpassword"
          Else
             ActiveSheet.Unprotect Password:="hardestpassword"
             Worksheets("Exercise Selection").Range("B1:B2").Locked = True
             ActiveSheet.Protect Password:="hardestpassword"
       End If
    End Sub

1 个答案:

答案 0 :(得分:2)

请参阅此SO post中的解决方案,您可以将 UserInterfaceOnly 添加到Protect方法,这样它就可以让VBA更改值而不会取消保护。

要使解决方案有效,您需要更改调用setOffscreenPageLimit();方法的所有代码,以使参数 pager.setAdapter(viewPageAdapter); pager.setOffscreenPageLimit(4);

e.g。 .Protect

使用此参数保护工作表后,可以在VBA宏中更改单元格值,而无需调用 UserInterfaceOnly:=True