运行时错误: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

我在这一个亏损,并find解决这个问题有困难。 我认为这是在表中设置范围引用单元格的问题,但我不确定。

感谢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.Cell的工作表的需要,但它将是相同数量的代码和工作表名称短。 无论哪种方式应该为任何人遇到这个问题。