隐藏自动过滤器箭头不起作用

时间:2015-01-06 15:13:37

标签: excel-vba excel-2010 vba excel

'data is filtered
Sub Filtration(mainsheet As Worksheet, lastrow As Long)

    Application.ScreenUpdating = False

    With mainsheet

        'filters
        .Range("$A$12:$J$" & lastrow).AutoFilter Field:=7, Criteria1:="TRUE" 
        .Range("$A$12:$J$" & lastrow).AutoFilter Field:=10, Criteria1:="TRUE"

        HideAutoFilterDropdowns

    End With

    Application.ScreenUpdating = True

End Sub

Sub HideAutoFilterDropdowns()
    With Range("A12")
        .AutoFilter Field:=1, VisibleDropDown:=False
        .AutoFilter Field:=2, VisibleDropDown:=False
        .AutoFilter Field:=3, VisibleDropDown:=False
        .AutoFilter Field:=4, VisibleDropDown:=False
        .AutoFilter Field:=5, VisibleDropDown:=False
        .AutoFilter Field:=6, VisibleDropDown:=False
        .AutoFilter Field:=7, VisibleDropDown:=False 'problem is here
        .AutoFilter Field:=8, VisibleDropDown:=False
        .AutoFilter Field:=9, VisibleDropDown:=False
        .AutoFilter Field:=10, VisibleDropDown:=False
    End With
End Sub

上面代码中发生的情况是我在工作表上有一组数据,并按字段编号7和10(G& J列)进行过滤。然后我想隐藏下拉箭头。它适用于1-6& 8-10,但是什么时候 我试图隐藏第7列,它不对数据进行过滤(与过滤功能的作用相反)。

2 个答案:

答案 0 :(得分:1)

您需要将Criteria1:=代码保留在该行中。删除该条件并运行HideAutoFilterDropdowns()后,您实际上是在告诉它删除条件过滤器。

With mainsheet

    'filters
    .Range("$A$12:$J$" & lastrow).AutoFilter Field:=7, Criteria1:="TRUE", VisibleDropDown:=False 
    .Range("$A$12:$J$" & lastrow).AutoFilter Field:=10, Criteria1:="TRUE", VisibleDropDown:=False

End With

答案 1 :(得分:0)

您还可以插入Sub" HideArrows()"发现于Hide Arrows in Excel AutoFilter。原始代码已经过修改,以满足您的特定需求和评论。

我遇到了同样的问题,想要分享这个解决方案,这个解决方案可以在众多打开的标签中找到。希望这对像我这样正在搜索留言板寻求帮助和解答的人有所帮助。

Sub HideArrows() 

'hides all arrows except column 2
Dim c As Range
Dim i As Integer
i = Cells(1, 1).End(xlToRight).Column
Application.ScreenUpdating = False

For Each c In Range(Cells(1, 1), Cells(1, i))
 'If c.Column <> 2 Then    **** added comment to remove
  c.AutoFilter Field:=c.Column, _
  Visibledropdown:=False
 'End If    **** added comment to remove
Next 

Application.ScreenUpdating = True 
End Sub