在工作表中我们经常用查找功能,在一列中查找某个内容,查找下一个,那在VBA中我们该如何进行查找呢?
我们看个实例:
上图中我们希望通过输入班级,点击筛选就能出来想要的内容,这里我忘了在筛选之前先做个清除,所以筛选二班记录时,三班的记录没有清除。
我们要把某个班级的记录筛选出来,那么就希望首先在对应的列里找到某个班级所在的单元格,这里就用到了find,找到后就把该行复制到对应位置,然后进行查找下一个。
上图中代码如下:
Sub 筛选()
Dim rng1, rng2, rng3 As Range, addr$, adr$
Set rng1=Range('a:a').Find(Range('e6').Value)
addr=rng1.Address
Do
Set rng1=Range('a:a').FindNext(rng1)
adr=rng1.Address
Set rng2=Cells(Rows.Count, 'e').End(xlUp)(2, 1)
Set rng3=rng1.EntireRow.Range('a1:c1')
rng3.Copy rng2
Loop Until addr=rng1.Address
End Sub
find的语法:
range(某区域).find(某值)
findnext的语法:
Range(某区域).FindNext(find的结果)
使用findnext要先使用find找到第一个结果,然后在用findnext找到下一个结果。
基本用法清楚以后,给大家留到练习题:
批量删除特定的行,效果做成如下:
今天的分享就到这里,VBA不动手是学不会的,所以一定要动手写。