VBA筛选对象的实际应用,AutoFilter数据搜索就是这么简单

VBA筛选对象的实际应用,AutoFilter数据搜索就是这么简单

解决方案goocz2024-12-14 11:27:2447A+A-

数据筛选在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---

点击这里复制本文地址 以上内容由goocz整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

果子教程网 © All Rights Reserved.  蜀ICP备2024111239号-5