【问题标题】:VBA: Protecting Shape Objects onlyVBA:仅保护形状对象
【发布时间】:2019-05-29 02:11:37
【问题描述】:

我阅读了很多帖子,但没有找到与我想要实现的目标相似的内容。我的工作表中基本上有一些Shape 对象,这些对象分配了宏。我想使用 VBA 保护这些对象,以便用户可以与它们交互但不能以任何方式编辑它们。但是,我希望用户(和我的 VBA)能够随意操作工作簿的其余部分。

我尝试了ActiveSheet.Protect DrawingObjects:=True,但问题是应用程序其余部分的可用性也非常有限。例如,我有一个隐藏/取消隐藏一系列单元格的复选框,但是当工作表受到保护时,我无法执行宏并且出现异常。有没有办法只保护Shape 对象,基本上让工作簿的其余部分不受限制,就好像工作表没有受到保护一样?

谢谢, 迪米塔

【问题讨论】:

  • 您是否尝试过通过审查而不是编程方式运行保护?它为您提供了一个选项列表 - 检查形状

标签: excel vba


【解决方案1】:

如果省略其他参数,您将获得它们的默认值。改为这样做:

ActiveSheet.Protect DrawingObjects:=True, _
                    Contents:=False, _
                    Scenarios:=False, _
                    UserInterfaceOnly:=False, _
                    AllowFormattingCells:=True, _
                    AllowFormattingColumns:=True, _
                    AllowFormattingRows:=True, _
                    AllowInsertingColumns:=True, _
                    AllowInsertingRows:=True, _
                    AllowInsertingHyperlinks:=True, _
                    AllowDeletingColumns:=True, _
                    AllowDeletingRows:=True, _
                    AllowSorting:=True, _
                    AllowFiltering:=True, _
                    AllowUsingPivotTables:=True

【讨论】:

    【解决方案2】:

    审查中 -> 保护工作表 -> 您希望检查除“编辑对象”之外的所有内容(因此用户仍然可以执行所有操作),然后创建密码。这让人们可以做除了编辑对象之外的所有事情——IIRC、形状都是。

    如果您一心想要使用 VBA 执行此操作,您可以快速录制具有类似锁的宏,查看它的外观,然后从那里进行编辑。

    编辑:我刚刚意识到您还试图允许其他对象。在这种情况下,我会考虑一个 on-change 事件,当您尝试保护的形状之一发生更改时,点击撤消

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-07
      • 2011-05-14
      相关资源
      最近更新 更多