我正在使用创建并填充一系列“路线”工作簿并在此过程中填充主“摘要”工作簿的漫长过程。Excel VBA-未将对象引用设置为对象的实例
简而言之,只要尝试在摘要中使用相关工作表,就会立即在从路由工作簿导入数据时立即发生错误。
wshRoute.Cells(2, 3).Value = RNum
:在以下两行中的一个发生
' Get Route Number
RNum = wshCtrl.Cells(2, 2 + i).Value ' Number for routes being processed (blank if not processed)
RawRNum = wshCtrl.Cells(4, 2 + i).Value ' Raw Number
' Get Route Direction
RDir = wshCtrl.Cells(9, 2 + i).Value
' Get Name of Worksheet
NamewshRoute = "Route " & RawRNum & " - " & RDir
' Check if Route Worksheet exists
Set wshRoute = Nothing
On Error Resume Next
Set wshRoute = Sheets(NamewshRoute)
On Error GoTo 0
' If Route Worksheet doesn't exist and Route being processed
If wshRoute Is Nothing And RNum <> "" Then
' Create Route Worksheet
' Copy Template
wshTemplate.Copy After:=wshTemplate
' Rename Copied Template
Worksheets("Template (2)").Name = NamewshRoute
' Set as Route Worksheet
Set wshRoute = Sheets(NamewshRoute)
' Enter Route Number and Direction
wshRoute.Cells(2, 3).Value = RNum
wshRoute.Cells(2, 4).Value = RDir
' If Route Worksheet doesn't exist and Route isn't being processes
ElseIf wshRoute Is Nothing Then
' Do Nothing
' Else Route Worksheet already exists and Route being processed
Else
' Update Progress Bar
Percent = j/(NumRoutes + 0.5) - (1/(NumRoutes + 1) * 8/8)
RefreshStatusBar Percent, "Processing " & NamewshRoute, "Initialising Route"
' Update Date
wshRoute.Range("AW9").Value = Month & Year
错误:
虽然引用整个代码将是不切实际的,我已经从那里我觉得是“相关”在这里复制
或
wshRoute.Range("AW9").Value = Month & Year
取决于工作表是否存在。
注意的是:
- Explicit选项是存在于代码的顶部。
- 据我所知,所有变量都被定义和适当地设置。
- 我已经使用了调试过程,并使用“添加监视”已确认wshRoute设置得当,RNum,Month和Year也是如此。
- wshRoute.Cells(2,3).Value返回正确的值,wshRoute.Range(“AW9”)。Value也是如此。
- 我可以看到的唯一不一致是,当我进一步查看wshRoute的属性时,属性'OnCalculate'到'OnSheetDeactivate'都具有值。不确定这是否相关。
此代码工作正常(我已使用大约一年),直到我在开始时添加了另一个宏。新的宏将打开一个不同的工作簿并创建“数据”文件。它不以任何方式与“摘要”工作簿交互。如果我运行的代码没有额外的新宏,它再次运行良好。
任何建议请解雇他们。这对我来说是重中之重,所以我会尽快进行测试。
谢谢,卡梅伦
'打开一个不同的工作簿'时间来限定工作簿的工作表:'Set wshRoute = Sheets(NamewshRoute)'。 – findwindow
等一下,有什么可疑的。你在'If wshRoute Is Nothing'之后立即设置了'wshRoute'。 – findwindow
使用'Set wshRoute = WorkSheets(NamewshRoute)'而不是'Set wshRoute = Sheets(NamewshRoute)'。 – PaichengWu