在vba(visual basic)中,是否有任何方法可以确定已过滤的值,而无需遍历每行数据?
在vba(visual basic)中,是否有任何方法可以确定已过滤的值,而无需遍历每行数据?我知道每一行都有一个.hidden值,如果数据被过滤,这个值是真的,但是有没有办法不经过每一行就知道哪些数据被过滤了呢?这会节省我很多时间 因此,是否有任何方法来确定,例如,值“4”、“5”和“6”已针对第1列进行筛选,值“1”、“2”和“3”已针对第2列进行筛选,而不必遍历每一行,而不是遍历每一行在vba(visual basic)中,是否有任何方法可以确定已过滤的值,而无需遍历每行数据?,vba,Vba,在vba(visual basic)中,是否有任何方法可以确定已过滤的值,而无需遍历每行数据?我知道每一行都有一个.hidden值,如果数据被过滤,这个值是真的,但是有没有办法不经过每一行就知道哪些数据被过滤了呢?这会节省我很多时间 因此,是否有任何方法来确定,例如,值“4”、“5”和“6”已针对第1列进行筛选,值“1”、“2”和“3”已针对第2列进行筛选,而不必遍历每一行,而不是遍历每一行 谢谢 有点乱,但它能工作 脚本将把列ref和过滤的值打印到中间窗口中,每个列都是活动的过滤器 您需要根据
谢谢 有点乱,但它能工作 脚本将把列ref和过滤的值打印到中间窗口中,每个列都是活动的过滤器 您需要根据需要对其进行修改
Option Explicit
Sub CheckFilterSelection()
Dim SomeSheetName As Worksheet
Set SomeSheetName = ThisWorkbook.Sheets("Sheet1")
Dim CurFilter As Filter
Dim Crite1
Dim Crite2
Dim Op
Dim CurFilterCrit As Variant
Dim FilterNum As Long
With SomeSheetName
If .AutoFilterMode Then
For FilterNum = 1 To .AutoFilter.Filters.Count
If .AutoFilter.Filters(FilterNum).On Then
'If the Current Filter on a Column has 2 selections then it uses _
Criteria1 and Criteria2
'If the Current Filter has more than two then it sorts them into an array _
in Criteria1
If .AutoFilter.Filters(FilterNum).Count > 2 Then
For Each CurFilterCrit In .AutoFilter.Filters(FilterNum).Criteria1
Debug.Print "Column " & .AutoFilter.Filters(FilterNum).Parent.Range.Column + FilterNum - 1 & _
" Criteria " & CurFilterCrit
Next CurFilterCrit
ElseIf .AutoFilter.Filters(FilterNum).Count = 2 Then
Debug.Print "Column " & .AutoFilter.Filters(FilterNum).Parent.Range.Column + FilterNum - 1 & _
" Criteria " & .AutoFilter.Filters(FilterNum).Criteria1
Debug.Print "Column " & .AutoFilter.Filters(FilterNum).Parent.Range.Column + FilterNum - 1 & _
" Criteria " & .AutoFilter.Filters(FilterNum).Criteria2
ElseIf .AutoFilter.Filters(FilterNum).Count = 1 Then
Debug.Print "Column " & .AutoFilter.Filters(FilterNum).Parent.Range.Column + FilterNum - 1 & _
" Criteria " & .AutoFilter.Filters(FilterNum).Criteria1
End If
End If
Next FilterNum
End If
End With
End Sub
不,这是不可能的。有没有办法确定.AutoFilter.Filters(FilterNum).Criteria1中CurFilterCrit的数量?我试图使用.AutoFilter.Filters(FilterNum).Criteria1.Count,但这不起作用。@JSmith捕获所有信息并不容易,所以我必须解决这个问题。你需要它的目的是什么?我觉得我做得很出色,回答了你的问题。