首页 > 解决方案 > 尝试使用 vba 在 Excel 中创建数组后过滤时出错

问题描述

我正在尝试获取一个名称列表并根据这些名称是否出现过滤另一个列表。为此,我想创建一个名称数组,然后使用该数组将自动过滤器应用于特定列中的另一张工作表。这是我目前拥有的代码:

Dim AdvisorEINs As Variant

    AdvisorEINs = Worksheets("Names to Filter").Range("A1:A36").Value
    Worksheets("All Advisors").Range("$A$1:$DZ$2216").AutoFilter Field:=15, Criteria1:=AdvisorEINs.Value, Operator:=xlFilterValues

目前,Run-time error '424': Object required当尝试运行和调试突出显示过滤行时,这会返回。我在Debug.PrintAdvisorEINs 变量上添加了一个,它输出相同的错误消息并向我建议这是由于变量没有正确获取数据。我不确定如何让阵列以其他方式获取数据 - 有人可以就此提供建议吗?

标签: arraysexcelvba

解决方案


你必须

  • 使用AdvisorEINs而不是AdvisorEINs.Value

  • 转置数组,因为Value多单元格范围的属性返回一个二维数组(尽管只有一列......)

如下:

Dim AdvisorEINs As Variant

AdvisorEINs = Worksheets("Names to Filter").Range("A1:A36").Value
Worksheets("All Advisors").Range("$A$1:$DZ$2216").AutoFilter Field:=15, Criteria1:=Application.Transpose(AdvisorEINs), Operator:=xlFilterValues

推荐阅读