繁体   English   中英

VBA不在受保护的工作表上更新— Excel Office 365

[英]VBA not updating on Protected Sheet — Excel Office 365

已经发布了大量类似问题的问题,但是这些解决方案都不适合我。 我使用的是Office 365,所以也许它已经改变了。 无论如何,这是我的问题。

我有一个文件,可将信息从一个主选项卡拉到其他选项卡。 在随后的选项卡上,我有VBA可以根据从主选项卡提取的值自动隐藏行。 每当主选项卡中的数据更新时,后续选项卡也应更新。 我在进行这项工作时遇到了问题,但是我通过使用另一个单元格来存储已传输的先前值(比较它们,并在它们互不相同时运行代码)来解决。 现在的问题是,当然,当选项卡受到保护时,它将无法运行。 需要保护这些选项卡,以防止最终用户破坏公式和格式,但是我不能使其与StackOverflow上发布的任何解决方案一起使用。 我的代码如下所示:

Sub Worksheet_Calculate()
    If Range("Old Value") <> Range("New Value").Value Then
    Range("Old") = Range("New").Value
    Rows.EntireRow.Hidden = False

    <<Insert code to auto-hide based on "New Value" cell>>

    End If
End Sub

我尝试在If语句的任何一侧添加Worksheet.Unprotect Password:=Worksheet.Protect Password:=命令,但出现424 Object Required错误。 我尝试使用带有密码保护的“ UserInterfaceOnly = True”命令,但它什么也没有改变(仍然可以尝试更改受保护的工作表错误)。 我尝试过创建另一个用于取消保护和重新保护的子例程,然后使用GoTo运行原始子例程。 但这也不起作用。 我看到了许多使用ActiveSheet命令的解决方案,但我认为我无法使用它们。 我正在更新主标签,并且该操作正在另一个标签上进行。 我对编码还很陌生,并且我正在自学。 因此,我可能会遗漏一些明显的东西。

在不受保护的情况下,它可以完美工作,所以我想我可能必须那样做。 但是,我讨厌在最终用户竭尽全力破坏文件时浪费时间修复文件,因此,我希望将其保护起来。

这可能不是最终答案,但我似乎偶然发现了一个解决方案。 由于我要在受保护的工作表上发生的唯一事情是使行自动隐藏,因此我没有保护行格式。 这样看来效果很好。 您可能会认为有一种方法可以正常运行VBA,而无需出于保护而跳入箍圈……。但是,我现在就介绍一下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM