VBA ActiveWorkbook / referstollocal - 1004应用定义或对象定义错误



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

rangeString = ActiveWorkbook.Names.Item("MyTableName").RefersToLocal

我看不到任何错误与我的代码,表名似乎是正确的。这段代码是在一个类模块内,我不是一个vba专家,所以我不知道如果引入任何问题与范围等

如果你的对象(MyTableName)是一个Excel数据表,使用ListObject使用的范围,例如

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

请不要选择这个作为答案。这只适用于增值:)

如果您只知道表的名称,并且不确定表在哪个工作表中,那么您可以尝试使用

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

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

Debug.Print "=" & Range("MyTableName").Parent.Name & "!" & Range("MyTableName").Address

对于遇到类似错误的任何人,请在即时窗口中尝试以下一行代码:

For ii = 1 to ThisWorkbook.Names.Count : ? ii & " " & ThisWorkbook.Names.Item(ii).Name : next

,从结果中您可能会发现表名是名称的一部分,即'My Second Sheet'!Print_Area' -该全名需要用作.Names的索引:

? ThisWorkbook.Names.Item("'BlahBlah'!Print_Area").RefersTo

最新更新