VBA:仅保护形状对象

时间:2019-05-28 17:34:13

标签: excel vba

我阅读了很多文章,但没有找到与我要达到的目标类似的东西。我的工作表中基本上有一些Shape对象,这些对象具有分配给它们的宏。我想使用VBA保护这些对象,以便用户可以与它们进行交互,但不能以任何方式对其进行编辑。但是,我希望用户(和我的VBA)能够根据需要自由地操纵工作簿的其余部分。

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

谢谢, Dimitar

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

在“审阅”->“保护工作表”->中,您希望除“编辑对象”之外的所有内容都被选中(以便用户仍然可以执行所有操作),然后创建一个密码。这样一来,除了编辑对象(即IIRC,形状)之外,人们可以做所有事情。

enter image description here

如果您想通过VBA来完成此操作,则可以快速记录具有类似锁的宏,查看其外观,然后从那里进行编辑。

编辑:我刚刚意识到您正在尝试允许其他对象。在那种情况下,我会考虑一个变化事件,而当您尝试保护的形状之一发生变化时,请点击