如何在vba使用自动筛选?

在excel工作表中,通过单击“数据”选项卡下的“排序和筛选”组中的“筛选”按钮可以创建单元格区域的自动筛选,如下图所示:

每个工作表通过上述方式有且只能创建一个单元格区域的自动筛选。

在vba中,Worksheet对象的AutoFilter属性可以返回上述工作表中的唯一的自动筛选AutoFilter对象,如果工作表中没有为单元格区域开启自动筛选,则AutoFilter属性返回 Nothing。

当为单元格区域添加自动筛选后,就可以通过显示的下拉箭头对各个字段进行筛选,不同的字段可以分别筛选,如下图所示分别对“姓名”、“月份”字段进行了筛选:

如果要用vba一次性取消所有字段的筛选,可以通过设置Worksheet对象的AutoFilterMode属性为False。

但是不能通过设置Worksheet对象的AutoFilterMode属性为True对原单元格区域重新启用自动筛选。

如果要再次对原单元格区域重新启用自动筛选,可以先用AutoFilter对象的Range属性返回启用了自动筛选的单元格区域Range对象,然后再对Range对象执行AutoFilter方法即可。

代码如下:

除了通过设置Worksheet对象的AutoFilterMode属性为False清除所有字段的筛选,还可以使用AutoFilter对象的ShowAllData方法清除所有字段的筛选。通过AutoFilter对象的ShowAllData方法清除所有字段的筛选不会使得原单元格区域清空自动筛选,代码如下:

 





       

发表评论