m88 188bet uedbet 威廉希尔 明升 bwin 明升88 bodog bwin 明升m88.com 18luck 188bet unibet unibet Ladbrokes Ladbrokes casino m88明升 明升 明升 m88.com 188bet m88 明陞 uedbet赫塔菲官网 365bet官网 m88 help
188bet www.188bet.com bwin 平博 unibet 明升 188bet uk Ladbrokes 德赢vwin 188bet m88.com w88 平博88 uedbet体育 188bet 188bet 威廉希尔 明升体育app 平博88 M88 Games vwin德赢 uedbet官网 bodog fun88 188bet

bwin官网网

 找回密码
 注册

QQ登录

只需一步,快速开始

你正在寻找更好的Excel学习教程吗?Excel技巧80集+数据透视表+bwin平台初中高全套+VBA80集,想学的这儿全都有
查看: 9287|回复: 14
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1楼
发表于 2013-3-31 10:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
bwin官网的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
如题:
比如要隐藏锁定B13:I22和B31:I37单元格区域内的公式,对于这个区域内的没有公式的单元格就不要隐藏和锁定了。

请问高手这个能不能解决呢?
分享到:  QQ好友和群QQ好友和群
收藏收藏
2楼
发表于 2013-3-31 11:13 | 只看该作者
3楼
 楼主| 发表于 2013-3-31 11:16 | 只看该作者
lisachen 发表于 2013-3-31 11:13
自己录一个宏就解决了

要在VBA里输入密码。
4楼
发表于 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表示
5楼
发表于 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
复制代码
刚刚没看清题目,代码追加了判定无公式不隐藏和不保护的功能
6楼
 楼主| 发表于 2013-3-31 11:23 | 只看该作者
1114550349 发表于 2013-3-31 11:17
以上代码即可,判定区域行数用b表示,列数用a表示

能不能在VBA里设修改蜜码呢,这段是隐藏和锁定。如果自己想根据密码解除,最好能跳出个输入密码解除隐藏和锁定的功能,
这个放到模块里用,对所用工作表起作用。
7楼
发表于 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
复制代码
8楼
 楼主| 发表于 2013-3-31 11:29 | 只看该作者
本帖最后由 simonshaw 于 2013-3-31 11:31 编辑
lisachen 发表于 2013-3-31 11:25

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

密码是不是可以输入任何字符?有没有位数限制?
9楼
发表于 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
复制代码
10楼
发表于 2013-3-31 11:35 | 只看该作者
simonshaw 发表于 2013-3-31 11:29
这段代码可操作性比上面的好。我试试看。

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

先试试  再说吧   
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|bwin官网 ( 豫ICP备11015029号 )

GMT+8, 2019-7-22 02:16 , Processed in 0.080000 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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