在活动工作表以外的受保护工作表上隐藏locking的行

我想弄清楚如何使用VBA代码隐藏locking的行。 比方说,我有3个密码保护工作表,所有单元格被locking, UserInterfaceOnly:= True

我的ActiveXbutton在Sheet1上。 我想隐藏所有工作表(Sheet1,Sheet2和Sheet3)中的行(“1:2”)。 但是,代码正好适用于Sheet1button所在的工作表。 当涉及到在Sheet2 / Sheet3上隐藏行时,Excel表示我无法隐藏该范围,因为它被locking。 但是,它也locking在Sheet1上,但它只是工作并隐藏/取消隐藏行1:2。

我已经提出了一个解决scheme,在隐藏/取消隐藏行之前对这两张表单进行取消保护,然后再次保护它们。 但是,这样做对我来说看起来不太合适,并且使得Excel在所有那些需要一些(非常less的)时间和“闪烁”的表单之间移动。 这对我来说是不需要的。 代码如下所示:

Rows("1:2").EntireRow.Hidden = True Sheet2.Unprotect Password:=pwd Sheet2.Rows("1:2").EntireRow.Hidden = True Sheet2.Protect Password:=pwd, AllowFormattingCells:=True, UserInterfaceOnly:=True Sheet3.Unprotect Password:=pwd Sheet3.Rows("1:2").EntireRow.Hidden = True Sheet3.Protect Password:=pwd, AllowFormattingCells:=True, UserInterfaceOnly:=True 

正如你所看到的,我不是不保护Sheet1,它的工作原理。

有没有什么办法来实现这一点,或者它总是只工作在ActiveXbutton的工作表上? 另外, 我不想使用AllowFormatingRows:= True

谢谢

我很害怕,你应该使用Unprotect / Protect命令。 没有这个就不行。

但是,您可以尝试使用Application.ScreenUpdating标志来删除“闪烁”。

 Application.ScreenUpdating = False Rows("1:2").EntireRow.Hidden = True Sheet2.Unprotect Password:=pwd Sheet2.Rows("1:2").EntireRow.Hidden = True Sheet2.Protect Password:=pwd, AllowFormattingCells:=True, UserInterfaceOnly:=True Sheet3.Unprotect Password:=pwd Sheet3.Rows("1:2").EntireRow.Hidden = True Sheet3.Protect Password:=pwd, AllowFormattingCells:=True, UserInterfaceOnly:=True Application.ScreenUpdating = True 

要防止屏幕闪烁,可以在运行macros之前设置Application.ScreenUpdating = False ,然后将其返回为True

至于能够隐藏行,而不保护他们是第一个工作表,我不认为这是可能的。 坦率地说,我很惊讶它在ActiveSheet上工作,而这是首先受到保护。

最后,这只是我挑剔,我会限定第一行代码的工作表 – 明确你工作的对象是防止意外行为的好方法。