ET疑难千寻千解丛书之EXCEL2010编程与实践 罗刚君 章兰新 黄朝阳 编著
疑难27
如何按指定的格式查找 如何查找某个格式的所有单元格?例如图所示的成绩表按不同班级和成绩范围设定了不同的格式。如何查找到字体为“Arial Black”、加粗且黄色背景的所有单元格? è解决方案 指定FindFormat,并通过Range.Find的“SearchFormat”参数来查找指定格式的区域。 í操作方法 步骤1
确定活动工作表为“成绩表”,按【Alt+F11】组合键打开VBE窗口。 步骤2
选择菜单“插入”→“模块”,并输入以下代码:
- Sub 按格式查找()
- Dim FindStr As String, Rng As Range, mRng As Range
- Application.FindFormat.Clear '清除原有格式
- With Application.FindFormat '设置查找格式
- .Font.Name = "Arial Black" '指定字体
- .Font.Bold = True '加粗
- .Interior.Color = 65535 '黄色背景
- End With
- With Range("C:C") '在C列查找
- Set Rng = .Find(What:="", LookIn:=xlFormulas, LookAt:=xlPart,Search
- Format:=True) '按格式查找
- If Rng Is Nothing Then MsgBox "没有找到此类单元格": Exit Sub '如果找不到则退出
- Set mRng = Rng '将找到的对象赋予另一个变量
- FindStr = Rng.Address '取第一个找到的单元格的地址
- Do
- Set mRng = Union(mRng, Rng)
- '合并变量mrng和找到的单元格(如果有多个符合条件,则逐一合并)
- Set Rng = .Find(What:="", After:=Rng, SearchFormat:=True) '查找下一个
- '直到找到的单元格的地址等于第一个单元格地址时停止
- Loop While FindStr <> Rng.Address
- mRng.Select '选择所有符合条件的单元格
- End With
- End Sub
复制代码步骤3
光标置于代码中任意位置,并按【F5】键执行,程序会按指定的三种格式查找所有单元格,并选择符合条件的单元格。本例中符合条件的单元格为C4、C9和C10,如图所示。
============================= 以上摘自《EXCEL2010编程与实践》 |