Excel 如何按单元格颜色和字体查找
Excel表格中查询内容,通常以单元格值的形式来进行查询,如果想以单元格的颜色来到查找,如何实现呢?
看完本节内容你就明白了。
Excel中有查询对话框,这里不做介绍,很明显,看到的内容并没有多么难学。
接下来查询对话框背后的代码,进行一下解释学习。
首先要认识一个属性:FindFormat
这个属性是Application对象下的一个属性,其功能就是设置查询的格式。
也就是说,想要查找什么颜色的单元格或什么字体字号的单元格,进行定义。
如下图所示,做了一个示例,查找蓝色背景的单元格,字号为12,字体为" 宋体"
既然是查询,那就要用到一个查询方法:Find()
这个方法有很多参数,前面的文章有介绍,可以找一下看具体用法。下面的示例中也有相关内容。
其中有一个参数是否和FindFormat属性有关。
searchformat:=True
searchformat参数的意义:是否按查找格式进行,设置为True,很显然要按照设置的格式查找,如果为False那是否。
上述就是重点,下面具体看代码:
Option Explicit Private Sub CommandButton1_Click() Dim FindStyleObj As Object '定义查找条件对象 Set FindStyleObj = Application.FindFormat With FindStyleObj '定义查找的条件 .Interior.Color = QBColor(9) '查找背景颜色 .Font.Size = 12 '查找字号为12 .Font.Name = "宋体" End With Dim cell As Range, cellAddress As String, r As Range Set cell = ActiveSheet.UsedRange.Find(what:="*", _ searchorder:=xlByRows, searchformat:=True) '查找并返回单元格 If cell Is Nothing Then MsgBox "什么都没有找到!": Exit Sub cellAddress = cell.Address '保存第一个找到单元格地址 Set r = cell '设置第一个单元格 Do While Not cell Is Nothing Set r = Application.Union(r, cell) '组合找到的确单元格 Set cell = ActiveSheet.UsedRange.Find(what:="*", _ after:=cell, searchorder:=xlByColumns, searchformat:=True) '查找并返回单元格 If cell.Address = cellAddress Then Exit Do '如果返回到第一个查到的单元格就退出查找 DoEvents Loop r.Select MsgBox "找到了如下单元格: " & r.Address Dim sStyle As String sStyle = "搜索条件:" & VBA.vbCrLf & _ "背景颜色值为:" & _ FindStyleObj.Interior.Color & _ VBA.vbCrLf & "字号大小为:" & FindStyleObj.Font.Size MsgBox sStyle '输出查找条件 FindStyleObj.Clear '清除查找条件 Set FindStyleObj = Nothing End Sub
代码就不逐行介绍了,都要有注释,如果不懂,那说明不适合本阶段的学习,收藏后再慢慢学习应用。
别看代码有点多,实际上重要的内容就几行,如find()函数和Application.FindFormat。
Application.FindFormat可以返回一个CellFormat对象,此对象可设置查询单元格的属性。虽然在代码中没有明确体现,但是有一个行就是这个方法实现的。
Set FindStyleObj = Application.FindFormat
FindStyleObj就是一个CellFormat对象。
单元格查找是一个很实用的功能,如果按照不同颜色或字体进行查询,那么可以实现一些特别的确功能。
前提是要首先对表格进行了一些单元格设置之后,不然什么也不找到就毫无意义了。
欢迎关注、收藏
---END---