ExcelVBAProtect参数详解
Excel VBA Protect参数详解
By 张印东
摘要:⽤VBA对EXCEL编程时,Worksheet.Protect⽅法总计有16个参数,其中部分参数的实际意义很难理解,本⽂重点对如下6个参数的含义进⾏了深⼊挖掘:
→DrawingObjects
→Contents
→Scenarios
→UserInterfaceOnly
→AllowSorting
→AllowFiltering
说明:本⽂所述内容均通过Excel 2007专业版验证,其它版本未做测试。
引⽤:Excel 开发⼈员参考中对通过VBA保护⼯作表的⽅法进⾏了如下描述:
Worksheet.Protect ⽅法
保护⼯作表使其不能被修改。
语法
表达式.Protect(Password, DrawingObjects, Contents, Scenarios, UserInterfaceOnly, AllowFormattingCells, AllowFormattingColumns, AllowFormattingRows, AllowInsertingColumns, AllowInsertingRows, AllowInsertingHyperlinks, AllowDeletingColumns, AllowDeletingRows, AllowSorting, AllowFiltering, AllowUsingPivotTables)
表达式⼀个代表Worksheet 对象的变量。
参数
说明
如果对⼯作表应⽤Protect ⽅法时,将UserInterfaceOnly参数设为True,然后⼜保存了⼯作簿,那么再次打开⼯作簿时,整张⼯作表将被完全保护,⽽并⾮仅仅保护⽤户界⾯。要在打开⼯作簿后重新启⽤
⽤户界⾯保护,必须再次将UserInterfaceOnly参数设为True 并应⽤Protect ⽅法。
要在受保护的⼯作表上做更改,如果提供密码,则可在受保护的⼯作表上使⽤Protect ⽅法。另⼀种⽅法是:取消⼯作表保护,对⼯作表做⼀些必要的更改,然后再次保护⼯作表。
注释
2006 Microsoft Corporation。保留所有权利。
深度说明:以上描述读起来⽐较晦涩,依据笔者的实际试验,特做深度说明如下。
1.Protect⽅法的特点
⽤Protect⽅法保护⼯作表时,被保护对象仅限于“锁定”状态的对象,如果某些单元格或图⽚不是“锁定”状态,则不被保护。
默认所有单元格均为锁定状态,如果想让⽤户可以修改部分单元格,可以通过选定这些单元格后点⿏标右键,选“设置单元格格式”,选“保护”选项卡,去掉“锁定”即可;
图⽚上点击⿏标右键,选“⼤⼩和属性”,选“属性”选项卡,去掉“锁定”即可;2.参数特点
所有参数均为可选参数,如果使⽤默认值,语句可以简化到
ActiveSheet.Protect
3.参数分类
Protect⽅法对应的参数分为两⼤类:
第⼀类:全局性参数,包括Password和UserInterfaceOnly两个参数。
第⼆类:保护⽅案参数,包括除第⼀类以外的所有参数,这部分参数决定对⼯作表的保护⽅式,⼜可以再细分为两个⼦类:
⼦类1:保护类,包括DrawingObjects, Contents和Scenarios三个参数。这类参数只要为True,就会限制⽤户的某些编辑或修改操作,这⼀点与通过Excel⽤户界⾯保护⼯作表时的选项恰恰相反(在⽤户界⾯中,选择某⼀项代表允许⽤户操作),容易引起混乱。
⼦类2:允许类,这类参数均以Allow开头,包括AllowFormattingCells,
AllowFormattingColumns, AllowFormattingRows, AllowInsertingColumns,
AllowInsertingRows, AllowInsertingHyperlinks, AllowDeletingColumns, AllowDeletingRows, AllowSorting, AllowFiltering,vba编程技巧
AllowUsingPivotTables
这类参数只要为True,则允许⽤户进⾏对应操作(这部分参数与通过⽤户界⾯操作相同)。
4.部分参数详解
UserInterfaceOnly:= True,仅保护⽤户界⾯,但不保护宏。例如⼯作表被保护后,⽤户⽆法修改A1单元格的内容,但却可以在VBA 宏中通过使⽤类似于[A1]=”From VBA”这样的语句,在保护状态下将A1单元格的内容修改成”From VBA”。
补充:UserInterfaceOnly:=True只在Excel⽂件本次打开状态有效,⼀旦重新打开,⼯作表就变成VBA和界⾯均保护状态。此参数在⽤户界⾯中没有对应项,为VBA独有。
DrawingObjects:=False,等同于⽤户界⾯中“编辑对象”被勾选。这⾥的“编辑”⽤词不准确,实际上应该包括“创建与编辑”,⽽“对
象”则是指“形状”,包括“插⼊”选项卡下的“图⽚、形状、SmartArt”、“图表”、“⽂本框、艺术字、签名⾏、对象(如PDF ⽂档)”等,上述内容均可以被插⼊或被编辑。
Scenarios:=False,等同于⽤户界⾯中“编辑⽅案”被勾选。这⾥的⽅案是指“数据”选项卡下“数据⼯具”组“假设分析”下⾯的“⽅案管理器”界⾯。如果为False,则显⽰隐藏的⽅案,并且⽅案都可以被修改或删除;如果为True,则不显⽰隐藏的⽅案,也不能编辑或删除⽅案;如下图所⽰:
Contents:是VBA编程独有的参数,如果为False,则即便锁定单元格的内容也可以被更改。如果使⽤了这个参数
(Contents:=False),则相当于同时将所有的Allow(允许类参数)都设置成了True,也就是⼏乎没有保护效果了,实际使⽤意义还
没发现。AllowSorting:=True对应⽤户界⾯的“排序”选项,但需要排序区域中的每个单元格必须是解
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论