运行时错误:1004应用程序定义或对象定义的错误
问题描述:
我得到一个运行时错误,当我运行下面的代码:运行时错误:1004应用程序定义或对象定义的错误
Application.ScreenUpdating = False
Application.Calculation = xlCalculationAutomatic
Application.DisplayStatusBar = False
Application.EnableEvents = False
Dim c, OrgList, vtList, FndRng As Range
Dim Tbl As ListObject
Dim NewRow As ListRow
Dim Org, Track As Worksheet
Set Org = ActiveWorkbook.Worksheets("Org List")
Set Track = ActiveWorkbook.Worksheets("Visit Tracking Sheet")
Set Tbl = Track.ListObjects("TrackTbl")
Set OrgList = Org.Range(Cells(2, 1), Cells(Org.UsedRange.Rows.Count, 1))
Set vtList = Track.Range("TrackTbl[Org ID]")
一切都正常运行,直到我去Set ChngList = Track.Range("TrackTbl[Org ID]")
会抛出Run-time Error: 1004
。我也曾尝试以下替换线,所有这些都抛出了同样的错误:
Set vtList = Tbl.Range(Cells(2, 1), Cells(ListRows.Count, 1))
Set vtList = Track.Range(Cells(2, 1), Cells(Track.UsedRange.Rows.Count, 1))
Set vtList = Track.Tbl.Range(Cells(2, 1), Cells(ListRows.Count, 1))
Set vtList = Tbl.Range
我在这个亏损一个并且很难找到解决方案。我认为这是在表中设置范围引用单元格的问题,但我不确定。
答
感谢Siddharth Rout指出我在这个正确的方向。
答案涉及两个问题,我没有注意到。首先是错误实际发生在Set OrgList
行而不是Set vtList
行。错误是由于即使我引用了正确的工作表而没有With
行,我必须在该行的每个点处引用该工作表。校正后的代码如下:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationAutomatic
Application.DisplayStatusBar = False
Application.EnableEvents = False
Dim c, OrgList, vtList, FndRng As Range
Dim Tbl As ListObject
Dim NewRow As ListRow
Dim Org, Track As Worksheet
Set Org = ActiveWorkbook.Worksheets("Org List")
Set Track = ActiveWorkbook.Worksheets("Visit Tracking Sheet")
Set Tbl = Track.ListObjects("TrackTbl")
Set OrgList = Org.Range(Org.Cells(2, 1), Org.Cells(Org.UsedRange.Rows.Count, 1))
Set vtList = Track.Range("TrackTbl[Org ID]")
我可以使用With
消除需要引用片在各线Range.Cells,但它本来的码相同的量和片材的名称是短。无论哪种方式都应该适用于遇到这个问题的任何人。
代码的其余部分在哪里?我没有看到你在哪里定义'ChngList' – dwirony
请看看[this](https://stackoverflow.com/questions/36368220/is-the-in-range-necessary-when-defined-by-cells)的答案你的问题 –
@dwirony对不起,这应该说'Set vtList',因为它显示在我发布的代码的最后一行。 –