VBA ActiveWorkbook/RefersToLocal - 1004应用程序定义或对象定义错误

Nei*_*l P 6 excel vba excel-vba

执行以下行时,将引发1004运行时错误(应用程序定义或对象定义错误)

rangeString = ActiveWorkbook.Names.Item("MyTableName").RefersToLocal
Run Code Online (Sandbox Code Playgroud)

我看不出我的代码有什么问题,表名似乎是正确的.这段代码在类模块中,我不是vba专家,所以我不知道是否会引入范围等任何问题.

Mik*_*keD 7

如果您的对象(MyTableName)是Excel数据表,请使用ListObject使用的Range,例如

Sub test()
    Dim L As ListObject

    Set L = ActiveSheet.ListObjects("MyTableName")
    ' at this point you can inspect the properties of L in the debugger

    ' retrieve the local address of tue underlying range
    Debug.Print L.Range.AddressLocal

End Sub
Run Code Online (Sandbox Code Playgroud)


Sid*_*out 5

请不要选择此作为答案.这仅适用于增值:)

如果您只有表格的名称并且不确定该表格所在的那张表格,那么您可以试试这个

Sub Sample()
    Dim oSh As Worksheet
    Dim oLo As ListObject

    For Each oSh In ThisWorkbook.Worksheets
        For Each oLo In oSh.ListObjects
            If oLo.Name = "MyTableName" Then
                Debug.Print "=" & oSh.Name & "!" & oLo.Range.Address
                Exit For
            End If
        Next
    Next
End Sub
Run Code Online (Sandbox Code Playgroud)


L42*_*L42 5

我认为Range Object可以访问任何表格中的任何表格:

Debug.Print "=" & Range("MyTableName").Parent.Name & "!" & Range("MyTableName").Address
Run Code Online (Sandbox Code Playgroud)