Excel 如何按单元格颜色和字体查找
Excel表格中查询内容,通常以单元格值的形式来进行查询,如果想以单元格的颜色来到查找,如何实现呢?
看完本节内容你就明白了。

Excel中有查询对话框,这里不做介绍,很明显,看到的内容并没有多么难学。
接下来查询对话框背后的代码,进行一下解释学习。
首先要认识一个属性:FindFormat
这个属性是Application对象下的一个属性,其功能就是设置查询的格式。
也就是说,想要查找什么颜色的单元格或什么字体字号的单元格,进行定义。
如下图所示,做了一个示例,查找蓝色背景的单元格,字号为12,字体为\" 宋体\"

既然是查询,那就要用到一个查询方法:Find()
这个方法有很多参数,前面的文章有介绍,可以找一下看具体用法。下面的示例中也有相关内容。
其中有一个参数是否和FindFormat属性有关。
searchformat:=True
searchformat参数的意义:是否按查找格式进行,设置为True,很显然要按照设置的格式查找,如果为False那是否。

上述就是重点,下面具体看代码:
Option ExplicitPrivate Sub CommandButton1_Click()Dim FindStyleObj As Object \'定义查找条件对象Set FindStyleObj = Application.FindFormatWith FindStyleObj \'定义查找的条件.Interior.Color = QBColor(9) \'查找背景颜色.Font.Size = 12 \'查找字号为12.Font.Name = \"宋体\"End WithDim cell As Range, cellAddress As String, r As RangeSet cell = ActiveSheet.UsedRange.Find(what:=\"*\", _searchorder:=xlByRows, searchformat:=True) \'查找并返回单元格If cell Is Nothing Then MsgBox \"什么都没有找到!\": Exit SubcellAddress = cell.Address \'保存第一个找到单元格地址Set r = cell \'设置第一个单元格Do While Not cell Is NothingSet r = Application.Union(r, cell) \'组合找到的确单元格Set cell = ActiveSheet.UsedRange.Find(what:=\"*\", _after:=cell, searchorder:=xlByColumns, searchformat:=True) \'查找并返回单元格If cell.Address = cellAddress Then Exit Do \'如果返回到第一个查到的单元格就退出查找DoEventsLoopr.SelectMsgBox \"找到了如下单元格: \" & r.AddressDim sStyle As StringsStyle = \"搜索条件:\" & VBA.vbCrLf & _\"背景颜色值为:\" & _ FindStyleObj.Interior.Color & _VBA.vbCrLf & \"字号大小为:\" & FindStyleObj.Font.SizeMsgBox sStyle \'输出查找条件FindStyleObj.Clear \'清除查找条件Set FindStyleObj = NothingEnd Sub
代码就不逐行介绍了,都要有注释,如果不懂,那说明不适合本阶段的学习,收藏后再慢慢学习应用。
别看代码有点多,实际上重要的内容就几行,如find()函数和Application.FindFormat。
Application.FindFormat可以返回一个CellFormat对象,此对象可设置查询单元格的属性。虽然在代码中没有明确体现,但是有一个行就是这个方法实现的。
Set FindStyleObj = Application.FindFormat
FindStyleObj就是一个CellFormat对象。
单元格查找是一个很实用的功能,如果按照不同颜色或字体进行查询,那么可以实现一些特别的确功能。
前提是要首先对表格进行了一些单元格设置之后,不然什么也不找到就毫无意义了。
欢迎关注、收藏
---END---



