ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 7104|回复: 14

[求助] 单元格指定底色如何清除内容

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-12-19 16:50 | 显示全部楼层 |阅读模式
我做了个单元格,每个月的时候,都要清除这个工作表里底色为RGB(192,192,192)的单元格里的文字或图片,手工清除太麻烦了。可以帮助写个程序吗,清除这个工作表里的所有单元格只要是底色为RGB(192,192,192)的,运行即自动清除。谢谢。

TA的精华主题

TA的得分主题

发表于 2013-12-19 17:04 | 显示全部楼层
  1. Sub lqxs()
  2. Dim cel As Range
  3. For Each cel In ActiveSheet.UsedRange
  4.     If cel.Interior.Color = RGB(192, 192, 192) Then
  5.         cel.Interior.ColorIndex = xlNone
  6.         cel = ""
  7.     End If
  8. Next
  9. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-12-19 17:16 | 显示全部楼层
本帖最后由 zhaogang1960 于 2013-12-19 17:32 编辑

这个题目可以用Find方法查出符合条件的所有单元格,并删除文本及底色,并检查该单元格有没有图片,如果有则删除:
  1. Sub 宏1()
  2.     Dim c As Range, rng As Range, firstAddress$, m&, d As Object, shp As Shape
  3.     Set d = CreateObject("scripting.dictionary")
  4.     With Application.FindFormat
  5.         .Clear
  6.         .Interior.Color = RGB(192, 192, 192)
  7.     End With
  8.     With ActiveSheet.UsedRange
  9.         Set c = .Find(What:="", SearchFormat:=True)
  10.         If Not c Is Nothing Then
  11.             firstAddress = c.Address
  12.             Do
  13.                 m = m + 1
  14.                 If m > 1 Then Set rng = Union(rng, c) Else Set rng = c
  15.                 d(c.Address) = ""
  16.                 Set c = .Find(What:="", After:=c, SearchFormat:=True)
  17.             Loop While Not c Is Nothing And firstAddress <> c.Address
  18.         End If
  19.     End With
  20.     If m > 0 Then
  21.         rng.ClearContents'删除符合条件单元格的内容
  22.         'rng.Interior.ColorIndex = xlNone'这一句删除符合条件单元格的底色,如果要保留,请删除这一句
  23.         For Each shp In ActiveSheet.Shapes'删除TopLeftCell单元格有特定底色的图片
  24.             If d.Exists(shp.TopLeftCell.Address) Then shp.Delete
  25.         Next
  26.     End If
  27. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-12-19 17:22 | 显示全部楼层
本帖最后由 ahkin 于 2013-12-19 17:26 编辑
zhaogang1960 发表于 2013-12-19 17:16
这个题目可以用Find方法查出符合条件的所有单元格,并删除文本及底色,并检查该单元格有没有图片,如果有则 ...

谢谢两位,但底色要保留,只删除文字或图片。以上的会删除底色。

点评

3楼代码加了注释请参考  发表于 2013-12-19 17:33

TA的精华主题

TA的得分主题

发表于 2013-12-19 17:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ahkin 发表于 2013-12-19 17:22
谢谢两位,但底色要保留。以上的会删除底色。

rng.Interior.ColorIndex = xlNone'删除这一句即可

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-12-19 17:33 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zhaogang1960 发表于 2013-12-19 17:26
rng.Interior.ColorIndex = xlNone'删除这一句即可

还有合并的单元格不能清除文字

TA的精华主题

TA的得分主题

发表于 2013-12-19 17:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ahkin 发表于 2013-12-19 17:33
还有合并的单元格不能清除文字

我都看糊涂了,是不让,还是代码清除不了
请上传附件说明吧

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-12-19 17:44 | 显示全部楼层
zhaogang1960 发表于 2013-12-19 17:39
我都看糊涂了,是不让,还是代码清除不了
请上传附件说明吧

是合并的单元格,也要清除文字。但会显示无法清除。

TA的精华主题

TA的得分主题

发表于 2013-12-19 17:48 | 显示全部楼层
ahkin 发表于 2013-12-19 17:44
是合并的单元格,也要清除文字。但会显示无法清除。

猜一猜:
  1. Sub 宏1()
  2.     Dim c As Range, rng As Range, firstAddress$, m&, d As Object, shp As Shape
  3.     Set d = CreateObject("scripting.dictionary")
  4.     With Application.FindFormat
  5.         .Clear
  6.         .Interior.Color = RGB(192, 192, 192)
  7.     End With
  8.     With ActiveSheet.UsedRange
  9.         Set c = .Find(What:="", SearchFormat:=True)
  10.         If Not c Is Nothing Then
  11.             firstAddress = c.Address
  12.             Do
  13.                 m = m + 1
  14.                 If m > 1 Then Set rng = Union(rng, c.MergeArea) Else Set rng = c.MergeArea
  15.                 d(c.Address) = ""
  16.                 Set c = .Find(What:="", After:=c, SearchFormat:=True)
  17.             Loop While Not c Is Nothing And firstAddress <> c.Address
  18.         End If
  19.     End With
  20.     If m > 0 Then
  21.         rng.ClearContents
  22.         'rng.Interior.ColorIndex = xlNone
  23.         For Each shp In ActiveSheet.Shapes
  24.             If d.Exists(shp.TopLeftCell.Address) Then shp.Delete
  25.         Next
  26.     End If
  27. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2018-9-29 11:02 | 显示全部楼层

如何设置删除所有工作簿的呢?这个是活动表的
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-16 14:00 , Processed in 0.025656 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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