我学VBA:查找字符串并将单元格底纹改色


  Sub Myfind()

  '在单元格B1中当入您要查找的数据,然后在指定的单元格区域中查找,找到之后,将该单元格的底色设置成RGB(255,255,0)色,以便于查找。

  Dim iRange As Range, iFined As Range

  Dim iStr, iAddress As String, N As Integer, NextAddress As String '以上是定义使用到的变量

  Set iRange = Range("A2:A100") '给irange变量赋值为A2:A100区域

  iRange.Interior.Color = xlNone '将该区域的单元格底色设置为无色

  iStr = Range("b1").Value '给要查找的字符串变量赋值为B1单元格的值

  Set iFined = iRange.Find(iStr, lookat:=xlPart) '在irange区域内查找等于变量istr的单元格,并赋值给你ifined变量,如果要查找包含istr变量的单元格,更改参数lookat:=xlPart,全部,则用lookat:=xlWhole

  If iFined Is Nothing Then '判断 ifined变量是空

  MsgBox "在" & iRange.Address(0, 0) & "区域里,没有找到内容等于" & iStr & "的单元格!"

  Exit Sub

  Else

  iAddress = iFined.Address(0, 0) '登记第一个找到的单元格地址

  Range(iAddress).Interior.Color = RGB(255, 255, 0) '在第一个找到的单元格区域中,设置的底色为黄色

  '进入循环

  Do

  N = N + 1

  Set iFined = iRange.FindNext(iFined) '继续向下查找等于istr变量的单元格

  NextAddress = iFined.Address(0, 0) '找到之后的单元格地址

  Range(NextAddress).Interior.Color = RGB(255, 255, 0) '将该单元格的底色设置成黄色

  Loop While Not iFined Is Nothing And iAddress <> iFined.Address(0, 0) 'do循环的条件为ifined变量非空,并且ifined变量的单元格地址不等于找到的第一个单元格地址

  End If

  MsgBox "在" & iRange.Address(0, 0) & "区域里,共找到内容等于" & iStr & "的单元格有:" & N & "个!"

  End Sub