除非注明,文章均为 战战如疯 原创,转载请保留链接: 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就可以了。
|