过滤表VBA

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

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

从下面的图片可以看出,从过滤范围(“C7:L26”)中,每当过滤单元格(F2)或单元格(J2)时,都会从下拉列表中留下所需的数据。

例如,如果单元格(F2)= 2,单元格J2 = e,从范围(“C7,L26”),它将只显示值为“e”的部门,并有周2。 对于没有部门值或星期值的单元格,它将被清除或空白。

我也希望,如果有可能按下一个button将表返回到默认。

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

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

更新:我已经尝试录制macros

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:而不是loggingmacros,我决定使用文本框来过滤我的表格数据。 但是,我意识到我的表格不是根据我在文本框中input的内容进行筛选。

 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 

您需要保持参数在逗号分隔的同一行,它是Criteria1 ,而不是条件。 如果你想隐藏下拉箭头,你需要单独做。 下面的代码只隐藏了被过滤字段的下拉菜单。 如果当然,如果你只是过滤一个字段,那么你可以使用Sheet2.Range("A5:A26")因为过滤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方法 。