Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 14345|回复: 14

如何用VBA隐藏锁定指定单元格区域的公式?

[复制链接]
发表于 2013-3-31 10:48 | 显示全部楼层 |阅读模式
如题:
比如要隐藏锁定B13:I22和B31:I37单元格区域内的公式,对于这个区域内的没有公式的单元格就不要隐藏和锁定了。

请问高手这个能不能解决呢?
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-3-31 11:13 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2013-3-31 11:16 | 显示全部楼层
lisachen 发表于 2013-3-31 11:13
自己录一个宏就解决了

要在VBA里输入密码。
回复

使用道具 举报

发表于 2013-3-31 11:17 | 显示全部楼层
  1. Sub ni()
  2. Dim a%, b%
  3. For a = 2 To 9
  4. For b = 13 To 37
  5. If (b <= 22) Or (b >= 31) Then
  6.     If Cells(b, a).HasFormula = True Then
  7.     Cells(b, a).Select
  8.     Selection.Locked = True
  9.     Selection.FormulaHidden = True
  10.     End If
  11. End If
  12. Next
  13. Next
  14. End Sub
复制代码
以上代码即可,判定区域行数用b表示,列数用a表示
回复

使用道具 举报

发表于 2013-3-31 11:20 | 显示全部楼层
  1. Sub ni()
  2. Dim a%, b%
  3. For a = 2 To 9
  4. For b = 13 To 37
  5. If (b <= 22) Or (b >= 31) Then
  6.     If Cells(b, a).HasFormula = True Then
  7.     Cells(b, a).Select
  8.     Selection.Locked = True
  9.     Selection.FormulaHidden = True
  10.     Else: Cells(b, a).Select
  11.     Selection.Locked = False
  12.     Selection.FormulaHidden = False
  13.     End If
  14. End If
  15. Next
  16. Next
  17. End Sub
复制代码
刚刚没看清题目,代码追加了判定无公式不隐藏和不保护的功能
回复

使用道具 举报

 楼主| 发表于 2013-3-31 11:23 | 显示全部楼层
1114550349 发表于 2013-3-31 11:17
以上代码即可,判定区域行数用b表示,列数用a表示

能不能在VBA里设修改蜜码呢,这段是隐藏和锁定。如果自己想根据密码解除,最好能跳出个输入密码解除隐藏和锁定的功能,
这个放到模块里用,对所用工作表起作用。
回复

使用道具 举报

发表于 2013-3-31 11:25 | 显示全部楼层
  1. Sub 宏2()
  2.     Cells.Select
  3.     Selection.Locked = False
  4.     Selection.FormulaHidden = False
  5.     Union(Range("B13:I22"), Range("B31:I37")).Select
  6.     Selection.SpecialCells(xlCellTypeFormulas, 23).Select
  7.     Selection.Locked = True
  8.     Selection.FormulaHidden = True
  9.     ActiveSheet.Protect Password:="123", DrawingObjects:=True, Contents:=True, Scenarios:=True
  10. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-3-31 11:29 | 显示全部楼层
本帖最后由 simonshaw 于 2013-3-31 11:31 编辑
lisachen 发表于 2013-3-31 11:25

这段代码可操作性比上面的好。我试试看。

密码是不是可以输入任何字符?有没有位数限制?
回复

使用道具 举报

发表于 2013-3-31 11:35 | 显示全部楼层
这样试试

  1. Sub CC()
  2.     With Sheets("Sheet1")   '指定要操作的表
  3.         .Unprotect      '解除工作表保护
  4.         With .Cells     '操作所有单元格
  5.             .Locked = False     '取消锁定
  6.             .FormulaHidden = False      '取消隐藏单公式
  7.             With .SpecialCells(xlCellTypeFormulas, 23)      '定位公式
  8.                 .Locked = True          '锁定单元格
  9.                 .FormulaHidden = True   '隐藏公式
  10.             End With
  11.         End With
  12.         .Protect        '保护工作表
  13.     End With
  14. End Sub
复制代码
回复

使用道具 举报

发表于 2013-3-31 11:35 | 显示全部楼层
simonshaw 发表于 2013-3-31 11:29
这段代码可操作性比上面的好。我试试看。

密码是不是可以输入任何字符?有没有位数限制?

先试试  再说吧   
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-8 14:53 , Processed in 0.270834 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表