VBA对命名范围的引用

时间:2019-11-27 07:59:57

标签: excel vba

我有以下代码,其中我尝试应用3个过滤器,现在我想要的是根据命名范围应用此过滤条件 我已经在特定的单元格中存储了相关值,并为该范围指定了名称

对于第一个条件,即> = 200的命名范围为VOLUME

对于第二个条件,即> = 0.07,命名范围为MOVE

对于第三个条件,即> = 400,命名范围为STRENTH

那么我需要在以下代码中进行哪些更改?

Sub FILTER2()

'FILTER CRITERIA
ActiveSheet.Range("$A$2:$AC$500").AutoFilter Field:=6, Criteria1:=">=200", _
    Operator:=xlAnd
ActiveSheet.Range("$A$2:$AC$500").AutoFilter Field:=21, Criteria1:=">=0.07" _
    , Operator:=xlAnd
ActiveSheet.Range("$A$2:$AC$500").AutoFilter Field:=28, Criteria1:=">=400" _
    , Operator:=xlAnd

Range("A1").Select
End Sub

2 个答案:

答案 0 :(得分:1)

根据我的评论,您可能希望考虑使用With语句,最好不要参考ActiveSheet

Sub FILTER2()

With Sheet1 'Change according to your sheets CodeName
    .Range("$A$2:$AC$500").AutoFilter 6, ">=" & .Range("VOLUME")
    .Range("$A$2:$AC$500").AutoFilter 21, ">=" & .Range("MOVE")
    .Range("$A$2:$AC$500").AutoFilter 28, ">=" & .Range("STRENTH")
End With

End Sub

答案 1 :(得分:0)

您可以尝试定义一个变量以包含命名范围的值。 在工作表中将Range命名为“ Volume”,然后可以将该值存储在名为Range1的var中。

以下示例:

Sub FILTER2()  

namedRange1 = range("Volume")

'FILTER CRITERIA
ActiveSheet.range("$A$2:$AC$500").AutoFilter Field:=6, Criteria1:=">=" & namedRange1, _
    Operator:=xlAnd

....与其他行相同,只需定义新变量以包含新的命名范围