kam*_*id2 2 excel vba filter autofilter
我有一个表,我需要返回所有切换的值.当我在选择了我想要的内容后录制宏时,它看起来像这样
ActiveSheet.Range("$A$1:$P$1000").AutoFilter Field:=6, Criteria1:=Array("A" _
, "B", "C", "D", "E", "G"), Operator:=xlFilterValues
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,用户将过滤的a,b,c等值将始终在变化,因此我无法通过这种方式对任何标准进行硬编码.
有没有一种方法可以返回一个切换的数组,其方式类似于它的外观?
msgbox ActiveSheet.Range("$A$1:$P$1000").criteria1
Run Code Online (Sandbox Code Playgroud)
从以下数据开始:
这个子应用了一个过滤器:
Sub Macro1()
Range("A1:C22").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$C$22").AutoFilter Field:=3, Criteria1:=Array( _
"Alice", "Boris", "Mike"), Operator:=xlFilterValues
End Sub
Run Code Online (Sandbox Code Playgroud)
这个子将:
Sub FilterInformation()
Dim st As String, ws As Worksheet, rg As Range, boo As Boolean
Set ws = ActiveSheet
On Error GoTo GetMeOut
Set rg = ws.AutoFilter.Range
MsgBox "Filter range" & vbCrLf & rg.Address
N = ws.AutoFilter.Filters.Count
MsgBox "Number of filters" & vbCrLf & N
For i = 1 To N
boo = ws.AutoFilter.Filters.Item(i).On
MsgBox i & "==>" & boo
If boo Then
MsgBox UBound(ws.AutoFilter.Filters.Item(i).Criteria1) & " items in array"
U = UBound(ws.AutoFilter.Filters.Item(i).Criteria1)
L = LBound(ws.AutoFilter.Filters.Item(i).Criteria1)
For j = L To U
MsgBox ws.AutoFilter.Filters.Item(i).Criteria1(j)
Next
End If
Next
Exit Sub
GetMeOut:
MsgBox ("no filters in sheet")
End Sub
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3335 次 |
最近记录: |