Worksheet.ProtectContents 属性 表示指定工作表的内容是否受保护,Boolean 类型,只读。 要打开内容保护,请使用 Protect 方法,并将 Contents 参数设置为 True。 当对受保护的工作表进行写入时操作时,会产生一个1004的运行错误。 示例: If ActiveSheet.ProtectContents Then MsgBox "当前工作表的内容处于保护状态,无法写入,请先解除保护" Else Range("a1").Value = 1 End If 这里有个前提,就是单元格的保护选项中锁定需要勾选。 如果锁定没有勾选,还是可以直接写入的。 为了避免不必要的错误,在写入单元格前先检测当前工作表的内容是否受保护。 如果在保护状态,则提示解决保护,否则直接写入单元格。
Worksheet.ProtectDrawingObjects 属性 表示特定工作表的形状是否受保护,Boolean 类型,只读。 要打开形状保护,请使用 Protect 方法,并将 DrawingObjects 参数设置为 True。 当工作表内的形状牌保护时,执行删除方法会产生代码为-214702480的错误,提示内容为“指定的值超出了范围”。
当碰到这个错误提示时就要注意当前工作表的保护了。 解决方法:一是解除保护,二是保护时,编辑对象要勾选(DrawingObjects:=false)。 示例: If ActiveSheet.ProtectDrawingObjects Then MsgBox "当前工作表的形状内容处于保护状态,无法删除,请先解除保护" Else For Each shp In ActiveSheet.Shapes shp.Delete Next MsgBox "当前工作表内的形状删除完成" End If
Worksheet.Protection 属性 返回一个 Protection 对象,该对象表示工作表的保护选项。 Protection对象的属性如下: AllowDeletingColumns 是否允许删除受保护工作表上的列,只读。 AllowDeletingRows 是否允许删除受保护工作表上的行,,只读。 AllowEditRanges 返回一个 AllowEditRanges 对象。 AllowFiltering 是否允许用户使用工作表受保护之前设置的“自动筛选”,只读。 AllowFormattingCells 是否允许对受保护的工作表上的单元格进行格式设置,只读。 AllowFormattingColumns 是否允许对受保护的工作表上的列进行格式设置,只读。 AllowFormattingRows 是否允许对受保护的工作表上的行进行格式设置,只读。 AllowInsertingColumns 是否允许在受保护的工作表上插入列,只读。 AllowInsertingHyperlinks是否允许在受保护的工作表上插入超链接,只读。 AllowInsertingRows 是否允许用户在受保护的工作表上插入行,只读。 AllowSorting 是否允许在受保护的工作表上使用排序选项,只读。 AllowUsingPivotTables 是否允许用户在受保护的工作表上处理数据透视表,只读。 其中每一个设置都对应着保护工作表中的某个选项。
Worksheet.ProtectionMode 属性 表示是否启用了用户界面专用保护,Boolean 类型,只读。 要打开用户界面保护,请使用 Protect 方法,并将 UserInterfaceOnly 参数设置为 True。 关于Protect方法的UserInterfaceOnly属性描述如下: UserInterfaceOnly如果为 True,则保护用户界面,但不保护宏。 如果省略此参数,则既保护宏也保护用户界面。 说得直接点就是,当为True时,用VBA是可以修改单元格的,但是在工作表操作是不能修改的。 这个属性设置只适用于当前会话,工作簿关闭后再打开属性又会是False。 如果每次都想保护时能够用代码操作的话,可以在OPEN事件里在调用protect方法传递UserInterfaceOnly:=True 示例: If ActiveSheet.ProtectContents Then ActiveSheet.Unprotect End If '直接调用activesheet.unprotect也是可以的。 '调用Unprotect方法时,如果工作表并没有保护,则方法不起作用。 ActiveSheet.Protect userinterfaceonly:=True If ActiveSheet.ProtectionMode Then Range("a1").Value = Now End If ActiveSheet.Unprotect ActiveSheet.Protectuserinterfaceonly:=False Range("a1").Value = Now '这里会报1004错误 '如果在上一行的protect方法中省略userinterfaceonly:=False,还是能写入。 '如果在调用protect方法时有在参数里明确设置过userinterfaceonly:=true的情况下 '如果要取消这项,建议在再次调用Protect方法时还是显式加上userinterfaceonly:=false '虽然帮助里说这个参数省略时为False,但从刚刚的测试发现,还是能写入。 '似乎有记忆效应。
Worksheet.ProtectScenarios 属性 表示特定工作表的方案是否处于保护状态,Boolean 类型,只读。
|