我在想一个简单的问题。
我有多个具有唯一 ID 的表。假设这个 ID 在 A 列中。
表一是我的主表。当我从 A 列的表过滤器中选择一个值时,我想将相同的标准调整到其他表(使用 VBA 代码)
但是我可以使用哪个语句将 table1 过滤器的条件读入一个变量,我可以将其用于其他表的过滤条件?
感谢任何提示!
干杯,让-玛丽
我可以找到很多关于如何在带有变量的表上设置自动筛选的信息,但是我找不到如何将活动的自动筛选条件读入变量的解决方案?
Private Sub simple_example_set_filter(ByVal afilter As String)
With Range("CC_FILTER_AREA")
.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, Criteria1:=afilter, Operator:=xlOr, Criteria2:="=~", VisibleDropDown:=False
End With
End Sub
我读了一些过滤器并创建了一个字符串以用于报告:
Public Function GetFilterCriteria(rng As Range, Optional prompt As String = vbNullString) As String
Dim str1 As String, str2 As String, c As Long
With rng.Parent.AutoFilter
c = .Range.Column
With .Filters(rng.Column - c + 1)
If Not .On Then
GetFilterCriteria = vbNullString
Exit Function
End If
str1 = .Criteria1
If .Operator = xlAnd Then
str2 = " and " & Mid(.Criteria2, 2)
ElseIf .Operator = xlOr Then
str2 = " or " & Mid(.Criteria2, 2)
End If
End With
End With
If (Left(str1, 2) = "<>") Then
GetFilterCriteria = prompt & Mid(str1, 3)
Else
GetFilterCriteria = prompt & Mid(str1, 2)
End If
'AutoFilter_Criteria = UCase(Rng) & ": " & str1 & str2
End Function
获取筛选表的条件
Sub GetCriteria()
Dim ws As Worksheet
Dim i As Long
Dim tbl1 As ListObject
Set ws = ThisWorkbook.Worksheets("Sheet1")
Set tbl1 = ws.ListObjects("Table1")
With tbl1.AutoFilter
For i = 1 To .Filters.Count
If .Filters(i).On Then
'.Range(1, i).Column is the filtered column
Debug.Print Mid(.Filters(.Range(1, i).Column).Criteria1, 2)
End If
Next i
End With
End Sub
感谢这个很好的例子。现在我明白如何解决这个问题了。我设法在我自己的代码中实现了它并且它有效。非常感谢!