VBA筛选对象的实际应用,AutoFilter数据搜索就是这么简单
数据筛选在Excel中应用是一个很方便的操作,如果应用得当将会在很大程度上提高对数据的查询过程。
本文将提供一个对象的介绍,来具体应用一下,数据筛选的操作方法。
如下图所示,对于数据表列进行数据筛选,如在某一列中查找一些相关数据,然后自动列出查找到的内容。
在此过程当中,很多步骤都通过Excel自动为我们进行了,所以,知道一些对象的应用就可以实现自动搜索功能。
实现筛选的功能,由对象AutoFilter对象来进行,此对象可返回一系列筛选后的数据内容,如果想得到这个对象,我们还要学习一个更重要的对象Range,这个对象的AutoFilter方法可以进行数据表的筛选,然后通过WorkSheet的AutoFilter属性来返回对象。
上述表达真得实在太难以理解了,不是我要这么写得难理解,而是西方人的思维,本身就这么无法理解。
下面通过一些代码来,增加理解。
上图为AutoFilter的方法和属性,可以参考认识一下。
代码:
set Sobj=WorkSheet.AutoFilter
这句可以返回一个AutoFilter对象Sobj或者Nothing对象。
也就是说,当工作表的筛选打开的时候才会返回一个AutoFilter对象,否则就是一个Nothing值。
这样就出现了一个问题,如何打开筛选器?
方法如下:
Range("A1").AutoFilter _
field:=2, _
Criteria1:=xStr, _
visibledropdown:=False '不显示箭头
利用Range对象的AutoFilter方法打开。
上述代码实际上是很有意义的一些内容,它指定了第2列为筛选列,筛选条件为xStr,也就是说当第2列的值等于变量xStr的值的时候就会显示出来。
visibledropdown=False表示不显示向下的箭头。
还有一些有用的属性可以在下面的代码中仔细查看:
Private Sub SetAutoFilter()
Dim s As Worksheet
Dim Afobj As AutoFilter '定义筛选变量
Dim xStr As String
xStr = Me.ComboBox1.Value '设置筛选条件
Set s = ActiveSheet
s.AutoFilterMode = False
If s.AutoFilterMode Then
Set Afobj = Me.AutoFilter
Else
'设置筛选
s.Range("A1").AutoFilter _
field:=2, _
Criteria1:=xStr, _
visibledropdown:=False '不显示箭头
End If
Set Afobj = s.AutoFilter
'MsgBox Afobj.Range.Address'返回自动筛选范围
'Afobj.ShowAllData '显示所有数据
Dim i As Integer
For i = 1 To Afobj.Filters.Count
If Afobj.Filters(i).On Then '如果打开指定的筛选
Afobj.Filters(i).Criteria1 '返回筛选区域内指定列上的第一个筛选值
End If
Next i
Set s = Nothing
Set Afobj = Nothing
End Sub
通过本文内容,并不能完全理解筛选的整个过程,因为代码中涉及到更多的一些对象和属性。在此不能把所有的对象进行一一介绍,本节中掌握了WorkSheet如何返回AutoFilter对象以及它的几个属性即可达到目的。
欢迎关注、收藏
---END---