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