我读过这个在单元格中显示 Excel 列过滤器信息它基本上可以完成预期的工作。但我想在过滤器处于活动状态时隐藏和取消隐藏 A 列。因此,我输入了以下隐藏取消隐藏代码
Function CheckFilters(r As Range) As String
Set AWS = ActiveSheet
fstate = ""
If AWS.FilterMode Then
c = AWS.AutoFilter.Filters.Count
'go through each column and check for filters
For i = 1 To c Step 1
If AWS.AutoFilter.Filters(i).On Then
ActiveSheet.Columns(1).Hidden = True
fstate = fstate & r(i).Value & ", "
End If
Next i
'removes the last comma
fstate = Left(fstate, Len(fstate) - 2)
Else
ActiveSheet.Columns(1).Hidden = False
fstate = "Keine aktiven Filter"
End If
CheckFilters = fstate
End Function
但从ActiveSheet.Columns(1).Hidden = True
函数调用时似乎被忽略了。当我从子函数调用它时,它可以工作。
谁能帮我?
答案1
我找到了解决方案https://stackoverflow.com/a/12808974/3789751。
我有以下子
Sub HideUnHide()
Set AWS = ActiveSheet
fstate = ""
If AWS.FilterMode Then
c = AWS.AutoFilter.Filters.Count
For i = 1 To c Step 1
If AWS.AutoFilter.Filters(i).On Then
ActiveSheet.Columns(1).Hidden = True
End If
Next i
Else
ActiveSheet.Columns(1).Hidden = False
End If
End Sub
这是从Worksheet_Calculate
Sub Worksheet_Calculate()
Call Modul1.HideUnHide
End Sub
答案2
在虚拟专用网络 功能在修改工作表时非常不可靠(它们非常擅长返回值)。你最好使用子相反。子程序将有两个参数;输入范围和输出字符串。