VBA。通过函数传递的Excel筛选条件值

时间:2017-11-20 10:41:09

标签: vba excel-vba excel

我正在使用使用VBA编写的自定义子例程进行过滤(和复制)选项。子例程获取要过滤的类别,作为参数'catName'。 我尝试使用多种组合将其设置为条件,但过滤没有发生。

尝试1

copyRange.AutoFilter 9, Criteria1:=catName

尝试2

Dim crit As String
crit = "=" & chr(34)&catName&chr(34)

尝试3

crit = "'" & catName& "'"

以上所有都失败了。

如果我只是在代码中对类别名称进行硬编码就可以正常工作。

copyRange.AutoFilter 9, Criteria1:="B"

如何使用传递给函数的值作为标准?提前谢谢。

2 个答案:

答案 0 :(得分:0)

你需要传递标准有点像公式。试试这个:

copyRange.AutoFilter 9, Criteria1:="=" & catName

方程式标记在这里很重要!

答案 1 :(得分:0)

试试这个:

Dim catName As String
catName = "B"
copyRange.AutoFilter 9, Criteria1:=catName

您没有正确引用某个地方,或者您没有正确定义catName。例如,检查它是如何完成的,用“3”过滤第1列:

enter image description here

使用此代码时:

Public Sub TestMe()

    Dim copyRange   As Range
    Dim strFilter   As String

    Set copyRange = Range("A1:P10")
    strFilter = "3"
    copyRange.AutoFilter 1, Criteria1:=strFilter

End Sub