从源表到新范围的动态过滤

时间:2018-10-16 09:44:23

标签: excel vba

我正在尝试基于源表获得动态过滤的表。

我现在正在尝试两种不同的方法:第一种是使用带有AutoFilter的ActiveX文本框,第二种是使用带有AdvancedFilter和按钮的高级筛选器。

以下是我用于文本框的代码:

Private Sub textbox_filter_Change()
    Dim strFilter As String
    Set tbl_repo = ActiveWorkbook.Worksheets("owssvr").ListObjects("repo")
    strFilter = "*" & [B1] & "*"
    Debug.Print strFilter
    tbl_repo.Range.AutoFilter _
        Field:=1, _
        Criteria1:=strFilter, _
        Operator:=xlFilterValues
End Sub

这里是高级过滤器按钮:

Private Sub advanced_filter_Click()
    Dim strFilter As String
    Set tbl_repo = ActiveWorkbook.Worksheets("owssvr").ListObjects("repo")
    tbl_repo.Range.AdvancedFilter _
        Action:=xlFilterCopy, _
        CriteriaRange:=Sheets("Sheet2").Range("B1:D2"), _
        CopyToRange:=Range("A3"), _
        Unique:=False
End Sub

这里的表结构: Table Structure

此处是高级过滤器: Advanced Filter

此处是文本框: Text Box

现在,我的问题是哪种解决方案将是实现用户最简单体验的最佳解决方案。我想发生的事情是,每当在“病原体”下键入某些内容时,新的过滤表应出现在过滤器下方。
在文本框中,过滤器保留在源表中,并且删除所有内容仍不能删除过滤器,因为“空白”单元格仍未显示。

在第二种情况下,过滤器不是动态的,这意味着用户必须单击按钮才能加载新表。在这种特殊设置下,表将被覆盖,而不是每次都被删除并重新创建,但是在运行新过滤器之前清除它应该并不难。

在两种情况下,我都没有自动完成功能。

您能帮我吗?

0 个答案:

没有答案