仅当文本框具有值时才调用过滤器

时间:2014-01-19 01:05:28

标签: excel vba

我有以下代码来过滤Excel工作表

With Sheets("Inventory on Hand").Range("A1:F1")
    .AutoFilter
    Call .AutoFilter(1, UserForm1.TextBox13.Text)
    Call .AutoFilter(3, UserForm1.TextBox15.Text)
    Call .AutoFilter(4, UserForm1.TextBox14.Text)
    Call .AutoFilter(5, UserForm1.TextBox16.Text)
End With

然而,问题是,如果我将TextBox13留空,则第1列将被过滤为空白行,这不是我想要的。

当且仅当相应的文本框具有值?

时,如何将过滤器应用于该列?

如果TextBox13为空,则根本不应过滤第1列。

2 个答案:

答案 0 :(得分:1)

您可以尝试:

If Len(UserForm1.TextBox13.Text) <> 0 Then Call .AutoFilter(1, UserForm1.TextBox13.Text)

或者

If Not IsEmpty(UserForm1.TextBox13) Then Call .AutoFilter(1, UserForm1.Textbox13.Text)

或者

If UserForm1.TextBox13.Value <> "" Then Call .AutoFilter(1, UserForm1.TextBox13.Text)

无法测试它,所以我留给你。

答案 1 :(得分:1)

您可以确保如果未选择任何内容,则删除第一列中的过滤器(如果之前已过滤)。这看起来像是:

If If UserForm1.TextBox13.Value <> "" Then
    Call .AutoFilter(1, UserForm1.TextBox13.Text)
Else
    .AutoFilter Field:=1
End If