VBA ActiveWorkbook / RefersToLocal – 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
请不要select这个答案。 这只是为了增值:)
如果你只是有表的名称,不知道该表是在哪张表,那么你可以试试这个
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
我认为范围对象可以访问任何表中的任何表就好:
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