过滤表VBA

时间:2017-05-26 12:31:31

标签: excel vba excel-vba

我正在做我的项目,我遇到了一些问题。此外,我的范围是使用VBA作为我的项目的主要软件。

至于现在,我希望我可以使用下拉列表来过滤我的表格,它只显示我想要显示的特定部门和周。

从下图中,从范围(" C7:L26"),每当我过滤单元格(F2)或单元格(J2)时,它将从下拉列表中保留我想要的数据。

例如,如果单元格(F2)= 2且单元格J2 = e,则从范围(" C7,L26和#34;),它将仅显示具有值的部门" e"并有第2周。对于没有部门值或周值的单元格,它将被清除或空白。

我也希望如果可以按一个按钮将表格恢复为默认值。

指导我,我真的需要你的帮助!

[1] http://imgur.com/GNGyh91 [2] http://imgur.com/uuh2Y1u

更新:我已尝试录制宏

Sub Filter()
'
' Filter Macro
    Range("B9:BR38").Select
    ActiveWindow.ScrollRow = 32
    ActiveWindow.ScrollRow = 5
    ActiveWindow.ScrollRow = 1
    Selection.AutoFilter
    ActiveSheet.Range("$B$9:$BR$38").AutoFilter Field:=1, Criteria1:="e"

End Sub

更新2:我决定使用文本框来过滤我的表数据,而不是录制宏。但是,我意识到我的表没有按照我在文本框中输入的内容进行过滤。



Private Sub TextBox1_Change()

Dim Text

Text = TextBox1.Value

    If Text <> "" Then
    Sheet2.Range("A5:AV26").AutoFilter
    Field = 1
    criteria = "text,_"
    visibledropdown = False
    
    Else
        Sheet2.AutoFilterMode = False
    
    End If


    
    
    
    
    
End Sub
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

您需要将参数保持在逗号分隔的同一行,并且 Criteria1 ,而不是条件。如果要隐藏下拉箭头,则需要单独执行每个操作。下面的代码仅隐藏了要过滤的字段的下拉列表。如果当然,如果您只过滤一个字段,那么您可以使用Sheet2.Range("A5:A26"),因为过滤会遍历所有列。

If True Then
    Sheet2.Range("A5:AV26").AutoFilter Field:=1, Criteria1:="text,_", VisibleDropDown:=False
Else
    If Sheet2.AutoFilterMode Then Sheet2.AutoFilterMode = False
End If

有关详细信息,请参阅Range.AutoFilter Method