我应该做什么范围?

时间:2018-10-10 01:29:17

标签: excel vba excel-vba runtime-error named-ranges

想知道,为什么每次调试它都会出现

  

运行时错误1004;对象“ _Global”的方法“范围”失败

,它将在行

中突出显示
 DataSH.Range("A2").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=Range("Data!$L$8:$L$9"), CopyToRange:=Range("Data!$N$8:$T$8"), _
            Unique:=False

如果编码采用形式,则范围应为多少?范围请参考主数据表。谁能帮我?

Private Sub cmdContact_Click()
        Dim DataSH As Worksheet
        Set DataSH = Sheet1
        DataSH.Range("L8") = Me.cboHeader.Value
        DataSH.Range("L9") = Me.txtSearch.Text
        DataSH.Range("A2").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("Data!$L$8:$L$9"), CopyToRange:=Range("Data!$N$8:$T$8"), _
        Unique:=False
        lstEmployee.RowSource = Sheet1.Range("outdata").Address(external:=True)
    End Sub

1 个答案:

答案 0 :(得分:1)

Range("Data!$L$8:$L$9")

此不合格的Range调用实际上是隐式合格的ActiveSheet,这是通过一些默认成员的骗术和一些间接的操作。为了简单起见,我们可以说这是等效的:

ActiveSheet.Range("Data!__:__")

有一个问题:地址字符串用工作表名称限定,而我们要使用的Range则取自ActiveSheet是什么。如果有比赛,我们很幸运。否则,繁荣。

就在这里。这行得通吗?

ActiveSheet.Range("Data!$L$8:$L$9")

由于相同的原因,此示例代码会引发相同的错误:

Sheet1.Range("Sheet2!A1")