作者:绿色风
分类:
时间:2022-08-17
浏览:128
楼主 kevinchengcw |
Q: 如何用VBA代码保护整个工作簿中有公式的单元格? A: 代码如下:
- Sub test()
- Dim WS As Worksheet
- Dim Rng As Range
- For Each WS In Worksheets '循环各工作表
- With WS
- .Unprotect "112233" '取消保护(如果已经保护过)
- For Each Rng In .UsedRange '循环已使用区域的各个单元格
- Rng.Locked = Rng.HasFormula '单元格是否锁定与是否有公式一致
- Next Rng
- .Protect "112233" '保护工作表,使锁定效
- End With
- Next WS
- End Sub
运行后效果,工作表被保护,有公式的单元格不解除保护则无法编辑,从而起到保护公式的效果。 以上代码对工作表有无公式均通用,如果确定工作表一定有公式,也可以使用如下代码:
- Sub 保护公式()
- Dim sh As Worksheet
- Application.ScreenUpdating = False '关闭屏幕刷新
- For Each sh In Worksheets '循环各工作表
- With sh
- .Unprotect (123) '取消工作表保护(如果已经保护)
- .Cells.Locked = False '所有单元格取消锁定
- .Cells.SpecialCells(xlCellTypeFormulas).Locked = True '含有公式的单元格锁定
- .Protect (123) '保护工作表
- End With
- Next
- Application.ScreenUpdating = True '打开屏幕刷新
- End Sub
|
2楼 lhwhc |
隐藏公式呢?可以实现吗?请楼主做一下! |
3楼 kevinchengcw |
Rng.Locked = Rng.HasFormula '锁定单元格 Rng.FormulaHidden = Rng.HasFormula '隐藏公式 |
4楼 lhwhc |
呵呵,不懂。能不能详细点说明? |
5楼 海绵宝宝 |
这么好的帖子我收藏了,谢谢版主啊 |
6楼 ggsmart |
以下内容摘自帮助:
1、FormulaHidden 属性:如果工作表处于保护状态时将隐藏公式,则该值为 True。如果指定区域中有些单元格的 FormulaHidden 为 True,而有些单元格的 FormulaHidden 为 False,则该值为 Null。Variant 类型,可读写。
2、HasFormula 属性:如果区域中所有单元格均包含公式,则该值为 True;如果所有单元格均不包含公式,则该值为 False;其他情况下为 Null。Variant 类型,只读。 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一