隐藏自动过滤器箭头不起作用
Hiding autofilter arrows not working
'data is filtered
Sub Filtration(mainsheet As Worksheet, lastrow As Long)
Application.ScreenUpdating = False
With mainsheet
'filters
.Range("$A:$J$" & lastrow).AutoFilter Field:=7, Criteria1:="TRUE"
.Range("$A:$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
上面代码中发生的事情是我的 sheet 上有一组数据,它按字段编号 7 和 10(G 和 J 列)过滤。然后我想隐藏下拉箭头。它适用于 1-6 和 8-10,但是当
我尝试隐藏第 7 列,它取消过滤数据(与过滤功能相反)。
您需要在行中留下您的 Criteria1:=
代码。删除该条件和 运行 HideAutoFilterDropdowns()
后,您实际上是在告诉它删除条件过滤器。
With mainsheet
'filters
.Range("$A:$J$" & lastrow).AutoFilter Field:=7, Criteria1:="TRUE", VisibleDropDown:=False
.Range("$A:$J$" & lastrow).AutoFilter Field:=10, Criteria1:="TRUE", VisibleDropDown:=False
End With
您还可以插入在 Hide Arrows in Excel AutoFilter 找到的子 "HideArrows()"。原始代码已被修改以满足您的特定需求并附有注释。
我遇到了同样的问题,想分享这个解决方案,这个解决方案是在关于这个主题的许多打开的选项卡中找到的。希望这对像我一样正在搜索留言板寻求帮助和答案的其他人有所帮助。
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
'data is filtered
Sub Filtration(mainsheet As Worksheet, lastrow As Long)
Application.ScreenUpdating = False
With mainsheet
'filters
.Range("$A:$J$" & lastrow).AutoFilter Field:=7, Criteria1:="TRUE"
.Range("$A:$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
上面代码中发生的事情是我的 sheet 上有一组数据,它按字段编号 7 和 10(G 和 J 列)过滤。然后我想隐藏下拉箭头。它适用于 1-6 和 8-10,但是当 我尝试隐藏第 7 列,它取消过滤数据(与过滤功能相反)。
您需要在行中留下您的 Criteria1:=
代码。删除该条件和 运行 HideAutoFilterDropdowns()
后,您实际上是在告诉它删除条件过滤器。
With mainsheet
'filters
.Range("$A:$J$" & lastrow).AutoFilter Field:=7, Criteria1:="TRUE", VisibleDropDown:=False
.Range("$A:$J$" & lastrow).AutoFilter Field:=10, Criteria1:="TRUE", VisibleDropDown:=False
End With
您还可以插入在 Hide Arrows in Excel AutoFilter 找到的子 "HideArrows()"。原始代码已被修改以满足您的特定需求并附有注释。
我遇到了同样的问题,想分享这个解决方案,这个解决方案是在关于这个主题的许多打开的选项卡中找到的。希望这对像我一样正在搜索留言板寻求帮助和答案的其他人有所帮助。
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