在VBA里实现基于筛选更改的动态筛选条件范围的高级筛选,可以遵循以下步骤:
1.在VBA编辑器中打开你要使用高级筛选的工作薄,并从代码编辑器窗口的“插入”选项卡中选择“模块”。
2.在新模块中编写以下VBA代码:
Sub AdvFilter_DynamicCriteriaRange() Dim ws As Worksheet Dim rngData As Range, rngFilter As Range Dim strCriteriaRange As String
'设置工作表
Set ws = ThisWorkbook.Worksheets("Sheet1")
'定义数据范围(表头和数据单元格)
Set rngData = ws.ListObjects("Table1").Range
'检查是否有筛选,如果有,确定筛选范围
If ws.FilterMode Then
Set rngFilter = ws.AutoFilter.Range.Offset(1, 0).SpecialCells(xlCellTypeVisible)
Else
Set rngFilter = rngData
End If
'设定动态筛选条件范围
strCriteriaRange = "A10:A11" '此处以静态范围为例,可根据需要更改
'应用筛选
rngData.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range(strCriteriaRange), _
CopyToRange:=rngData, Unique:=False
End Sub
3.解释代码:代码中,我们首先设置工作表并确定数据范围(表头和数据单元格)。我们检查工作表是否已经筛选,并根据筛选状态确定我们使用的筛选范围。最后,我们设置动态筛选条件范围,并应用筛选。在此示例中,我们在静态范围"A
上一篇:AdvanceFilter 抛出 1004 错误,对象定义错误。
下一篇:AdvancePDFViewer:Failedassertion:line4263pos14:'owner!._debugCurrentBuildTarget==this':isnottrue