【问题标题】:Advanced Filter Excel VBA高级筛选 Excel VBA
【发布时间】:2017-02-14 18:08:05
【问题描述】:

我为我的高级过滤器创建了一个动态列表范围。我创建了名为“数据”的名称。当我尝试将名称输入 VBA 公式时,我收到一个错误。动态名称适用于条件和输出范围?

Range("Sheet2!Data").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range _
        ("Sheet2!Filter"), CopyToRange:=Range("Sheet2!Location"), Unique:=False

我收到以下运行时错误“1004”:

对象'_Global'的方法'Range'失败

【问题讨论】:

    标签: excel advanced-filter vba


    【解决方案1】:

    如果您的命名范围的范围仅适用于 Sheet2,那么您需要使用 Worksheets("Sheet2") 完全限定 Range,如下面的代码所示:

    With Worksheets("Sheet2")
        .Range("Data").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Range("Filter"), _
                    CopyToRange:=.Range("Location"), Unique:=False
    End With
    

    如果您的命名范围的范围是Workbook,则使用下面的代码(无需使用Worksheet 限定Range):

    Range("Data").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("Filter"), _
                    CopyToRange:=Range("Location"), Unique:=False
    

    【讨论】:

    • Sheets("Sheet2").Range("Data").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Range("Filter"), CopyToRange:=.Range("Location"), Unique:=False
    • 无论出于何种原因,它都无法识别该名称。我为所有 3 个名称创建了一个偏移公式;数据、过滤器和位置。但是当我使用数据时代码崩溃了。我使用的范围是 A11:N1000,但我可能会添加列和行,所以想使其动态化。是否可以有最后一行或最后一列范围?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    相关资源
    最近更新 更多