ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 清空未锁定单元格的内容

清空未锁定单元格的内容

作者:绿色风 分类: 时间:2022-08-17 浏览:122
楼主
い卋玑┾宝珼
Q:如何快速清空未锁定单元格呢

A:方法1:
判断已用区域中,单元格是否lock,如果是lock,则清空单元格内容
  1. Sub test1()
  2.     Dim x As Range, sht As Worksheet
  3.     For Each sht In Worksheets
  4.         For Each x In sht.UsedRange
  5.             If x.Locked = False Then x.ClearContents    '如果不是锁定的,则清空内容
  6.         Next
  7.     Next
  8. End Sub
方法2:
通过find查找符合条件的单元格,清空其内容,继续查找,直到找到的单元格为起始位置结果

但是这种方式基本上都报错,在示例文件中,test2为对应的代码,但是一直报错。

问过K版,说是因为和excel的文件格式有关。具体的话,有兴趣研究的朋友可以继续研究一下。

这里仅提供一种思路
手动操作的话,可以查找这非锁定格式的内容,然后全选这些内容,清空即可

方法3:
SearchFormat替换,通过格式检索,批量清空内容
  1. Sub test3()
  2.     Dim sht As Worksheet
  3.     Application.ScreenUpdating = False '关闭屏幕更新
  4.     Application.EnableEvents = False '禁用事件
  5.     Application.Calculation = xlCalculationManual '对工作簿进行计算
  6.     With Application.FindFormat '设置查找格式为不锁定单元格
  7.         .Clear
  8.         .Locked = False
  9.     End With
  10.     For Each sht In ThisWorkbook.Worksheets '查找格式,并清空内容
  11.         sht.UsedRange.Replace "", "", SearchFormat:=True, ReplaceFormat:=False
  12.     Next
  13.     Application.Calculation = xlCalculationAutomatic '设置自动计算
  14.     Application.EnableEvents = True '启用事件
  15.     Application.ScreenUpdating = True '打开屏幕更新
  16. End Sub
示例中随意地做了一些数据,来演示效果
在此种情况下,由于方法1是对单个单元格枚举处理,所以比方法3的批量处理,要慢一些。


清空未锁定单元格的内容.zip
2楼
成就滋味
学习了,感谢!~
3楼
纵鹤擒龙水中月
学习了,
4楼
老糊涂
学习了,感谢!

免责声明

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

评论列表
sitemap