本文由2583774贡献
doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
在在实际应用中,Excel 编制的报表、表格、程序等,往往在单元格中设置了公式、函数、自定义格式等,为了防止在使用过程中修改或无意中修改这些设置,一般使用 Excel 的工作表保护功能来保护这些设置。但是程序中可能会使用代码对受保护的工作表进行操作,此时如果没有解除工作表保护,运行出现错误,如图 1 所示。
图 1 运行错误提示解决方法是在运行操作工作表的代码前先使用代码解除工作表保护,待操作完毕后再保护工作表,如下面的代码所示。
1. Sub ShProtect()
2.
3.
4.
5.
6. With Sheet1 .Unprotect Password:="12345" .Cells(1, 1) = 100 .Protect Password:="12345" End With
7. End Sub
代码解析: ShProtect 过程在受保护的工作表中对单元格进行操作,其中第 3 行代码使用 Unprotect 方法解除工作表的保护。应用于 Worksheet 对象的 Unprotect 方法解除工作表的保护,如果工作表不是受保护的,则此方法不起作用,所以在解除之前无需判断工作表是否受保护,其语法如下:
expression.Unprotect(Password) 参数 expression 是必需的,该表达式返回一个Worksheet 对象。参数 Password 是可选的,指定用于解除工作表的保护的密码,此密码是区分大小写的。第 4、5 行代码在单元格录入数据后使用 Protect 方法重新保护工作表。应用于 Worksheet 对象的 Protect 方法保护工作表使其不至被修改,语法如下:
expression.Protect(Password, DrawingObjects, Contents, Scenarios, UserInterfaceOnly, AllowFormattingCells, AllowFormattingColumns, AllowFormattingRows, AllowInsertingColumns, AllowInsertingRows, AllowInsertingHyperlinks, AllowDeletingColumns, AllowDeletingRows, AllowSorting, AllowFiltering, AllowUsingPivotTables) 其中参数 expression 是必需的,该表达式返回一个 Worksheet 对象。参数 Password 是可选的,为一个字符串,该字符串为工作表指定区分大小写的
密码。其他参数都是可选参数,其功能等同于如图 2 所示的工作表保护对话框中的各项选项,具体请参阅 VBA 帮助。
图 2 工作表保护选项如果一个 Excel 文件使用时间过长,忘记了工作表保护时设置的密码,那么也可以使用 VBA 解除工作表的保护,代码如下:
1. Sub RemoveShProtect()
2.
3.
vba做excel窗体录入教程4.
5.
6.
7.
8. Dim i1 As Integer, i2 As Integer, i3 As Integer Dim i4 As Integer, i5 As Integer, i6 As Integer Dim i7
As Integer, i8 As Integer, i9 As Integer Dim i10 As Integer, i11 As Integer, i12 As Integer On Error Resume Next If ActiveSheet.ProtectContents = False Then MsgBox "该工作表没有保护密码!"
9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Exit Sub End If For i1 = 65 To 66: For i2 = 65 To 66: For i3 = 65 To 66 For i4 = 65 To 66: For i5 = 65 To 66: For i6 = 65 To 66 For i7 = 65 To 66: For i8 = 65 To 66: For i9 = 65 To 66 For i10 = 65 To 66: For i11 = 65 To 66: For i12 = 32 To 126 ActiveSheet.Unprotect Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) _ & Chr(i6) & Chr(i7) & Chr(i8) & Chr(i9) & Chr(i10) & Chr(i11) & Chr(i12) If ActiveSheet.ProtectContents = False Then MsgBox "已经解除了工作表保护!" Exit Sub End If Next: Next: Next: Next: Next: Next Next: Next: Next: Next: Next: Next
23. End Sub
代码解析: RemoveShProtect 过程解除工作表的保护。其中第 7 行到第 10 行代码判
断工作表是否受保护,ProtectContents 属性返回工作表的保护状态,如果工作表的内容处于保护状态,则该值为 True。第 11 行到第 22 行代码使用 For……Next 语句和 Chr 函数来返回指定字符码所代表的字符串组合不断地尝试解除工作表保护,一旦工作表的ProtectContents 属性返回 False 说明已经解除工作表保护。
本TXT由“文库宝”下载:hua/wenkubao
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论