【问题标题】:Autifiltering in Excel with VBA using Textboxes使用文本框在 Excel 中使用 VBA 进行自动过滤
【发布时间】:2020-04-04 21:45:22
【问题描述】:

您好,我是 VBA 的新手,到目前为止我已经将它拼凑在一起,最终我让它工作但不是 100%。

我正在尝试使用多个文本框来自动过滤数据。目前我仅将 2 用于测试目的,但最终希望将其扩展到 4。每个文本框当前过滤但覆盖其他文本框,我希望它们一起工作,所以如果我在第一个文本框中输入一个单词,它将返回该列中包含该单词的所有实例,然后当我在第二个单词中添加一个单词时,它将进一步过滤这些结果,

Private Sub TextBox1_Change()

If Len(TextBox1.Value) = 0 Then
        Sheet1.AutoFilterMode = False
Else
    If Sheet1.AutoFilterMode = True Then
        Sheet1.AutoFilterMode = False
    End If

Sheet1.Range("A2:C" & Rows.Count).AutoFilter field:=1, Criteria1:="*" & TextBox1.Value & "*"
End If

End Sub

Private Sub TextBox2_Change()

If Len(TextBox2.Value) = 0 Then
        Sheet1.AutoFilterMode = False
Else
    If Sheet1.AutoFilterMode = True Then
        Sheet1.AutoFilterMode = False
    End If

Sheet1.Range("A2:C" & Rows.Count).AutoFilter field:=2, Criteria1:="*" & TextBox2.Value & "*"
End If

End Sub

任何帮助将不胜感激。

【问题讨论】:

    标签: excel vba filtering


    【解决方案1】:

    您是否正在寻找类似的东西

    Private Sub TextBox1_Change()
        filterTextboxes
    End Sub
    
    Private Sub TextBox2_Change()
        filterTextboxes
    End Sub
    
    Private Sub filterTextboxes()    
    
        If Len(TextBox1.Value) = 0 And Len(TextBox2.Value) = 0 Then
            Sheet1.AutoFilterMode = False
        Else
            If Sheet1.AutoFilterMode = True Then
                Sheet1.AutoFilterMode = False
            End If
    
            Sheet1.Range("A2:C" & Rows.Count).AutoFilter Field:=1, Criteria1:="*" & _
                TextBox1.Value & "*", Operator:=xlAnd
            Sheet1.Range("A2:C" & Rows.Count).AutoFilter Field:=2, Criteria1:="*" & _
                TextBox2.Value & "*", Operator:=xlAnd
        End If
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2012-02-22
      • 2014-03-30
      • 2022-11-11
      • 2021-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-14
      • 1970-01-01
      相关资源
      最近更新 更多