我有一张受保护的工作表("练习选择")所有单元格都被锁定,除了两个。
假设仅未锁定的单元格是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
答案 0 :(得分:2)
请参阅此SO post中的解决方案,您可以将 UserInterfaceOnly 添加到Protect方法,这样它就可以让VBA更改值而不会取消保护。
要使解决方案有效,您需要更改调用setOffscreenPageLimit();
方法的所有代码,以使参数 pager.setAdapter(viewPageAdapter);
pager.setOffscreenPageLimit(4);
e.g。
.Protect
使用此参数保护工作表后,可以在VBA宏中更改单元格值,而无需调用 UserInterfaceOnly:=True
。