分享

Excel VBA中Find函数的应用 | VBA实例教程

 gblhp 2015-02-16

除非注明,文章均为 战战如疯 原创,转载请保留链接: http://www./cat2/270.html,VBA交流群273624828。

今天再来看一下在Excel VBA中Find函数的基本用法。Find函数就是Excel表格中的查找功能,我们可以通过录制宏的方法来获得Find的代码。

Sub Macro1()

Cells.Find(What:="A", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
Cells.FindNext(After:=ActiveCell).Activate
End Sub

从上面可以看到Find函数共有8个参数,分别对应Excel表格查找里面选项的各个项目,这里我就不多说了,感兴趣可以自己试下,其中只有一个参数是必须的,那就是"What",即你要找的内容。下面我们来看整理之后的代码

Sub Find演示()
Dim rng
Set rng = ActiveSheet.UsedRange.Find(What:="A")
'MsgBox "字母A地址为" & rng.Address(0, 0)
'MsgBox "字母A所在行为" & rng.Row
MsgBox "字母A所在列为" & rng.Column
End Sub

上面的代码我们只用了一个参数What,Find函数查找到的是一个单元格,是range对象,这里我们直接把这个range赋值给了变量rng,那么相应单元格的地址和行、列号就可以如上面代码所示表示出来了。

上面的代码只是查找一个到第一个值,如果我们要查找的范围里面有多个字母A,我们要把所有的A都找出来标上底色,那怎么办呢?看下面的代码

Sub FindAll()
Dim rng, Address1, Address2
Set rng = ActiveSheet.UsedRange.Find(What:="A")
Address1 = rng.Address(0, 0)
Do Until Address1 = Address2
Set rng = ActiveSheet.UsedRange.FindNext(rng)
Address2 = rng.Address(0, 0)
rng.Interior.ColorIndex = 6
Loop
End Sub

上面的代码中查找第一个时我们用了Find函数,并将第一个符合条件的单元格地址放在了变量Address1中,然后利用函数FindNext,其只有一个参数After,代表从这个参数往后查,所以FindNext(rng)就是查找下一个了,不断的找,当又找到第一个位置的时候Address1和Address2就相同了,也就表示整个范围都找了一遍了,这时就可以退出循环了。

示例文件就不上了,自己建个Excel表格,随便填上些A、B、C、D就可以了。

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多