ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何用VBA代码保护整个工作簿中有公式的单元格?

如何用VBA代码保护整个工作簿中有公式的单元格?

作者:绿色风 分类: 时间:2022-08-17 浏览:128
楼主
kevinchengcw
Q: 如何用VBA代码保护整个工作簿中有公式的单元格?
A: 代码如下:
  1. Sub test()
  2. Dim WS As Worksheet
  3. Dim Rng As Range
  4. For Each WS In Worksheets   '循环各工作表
  5.     With WS
  6.         .Unprotect "112233"    '取消保护(如果已经保护过)
  7.         For Each Rng In .UsedRange   '循环已使用区域的各个单元格
  8.                 Rng.Locked = Rng.HasFormula   '单元格是否锁定与是否有公式一致
  9.         Next Rng
  10.         .Protect "112233"   '保护工作表,使锁定效
  11.     End With
  12. Next WS
  13. End Sub

运行后效果,工作表被保护,有公式的单元格不解除保护则无法编辑,从而起到保护公式的效果。
以上代码对工作表有无公式均通用,如果确定工作表一定有公式,也可以使用如下代码:
  1. Sub 保护公式()
  2.     Dim sh As Worksheet
  3.     Application.ScreenUpdating = False   '关闭屏幕刷新
  4.     For Each sh In Worksheets   '循环各工作表
  5.         With sh
  6.             .Unprotect (123)   '取消工作表保护(如果已经保护)
  7.             .Cells.Locked = False   '所有单元格取消锁定
  8.             .Cells.SpecialCells(xlCellTypeFormulas).Locked = True   '含有公式的单元格锁定
  9.             .Protect (123)   '保护工作表
  10.         End With
  11.     Next
  12.     Application.ScreenUpdating = True  '打开屏幕刷新
  13. End Sub
2楼
lhwhc

隐藏公式呢?可以实现吗?请楼主做一下!
3楼
kevinchengcw
Rng.Locked = Rng.HasFormula  '锁定单元格
Rng.FormulaHidden = Rng.HasFormula   '隐藏公式
4楼
lhwhc
呵呵,不懂。能不能详细点说明?
5楼
海绵宝宝
这么好的帖子我收藏了,谢谢版主啊
6楼
ggsmart


以下内容摘自帮助:

1、FormulaHidden 属性:如果工作表处于保护状态时将隐藏公式,则该值为 True。如果指定区域中有些单元格的 FormulaHiddenTrue,而有些单元格的 FormulaHiddenFalse,则该值为 NullVariant 类型,可读写。

2、HasFormula 属性:如果区域中所有单元格均包含公式,则该值为 True;如果所有单元格均不包含公式,则该值为 False;其他情况下为 NullVariant 类型,只读。

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap