Я использую длинный процесс, который создает и заполняет серию «маршрутных» книг и заполняет книгу «резюме» мастера при этом.Excel VBA - Ссылка на объект не установлена в экземпляр объекта
Вкратце, ошибка возникает сразу же в начале импорта данных из учебника маршрута, как только я пытаюсь использовать соответствующий лист в сводке.
При цитировании весь код будет непрактично, я скопировал оттуда, где я думаю, что «отношение» здесь:
' 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.Cells(2, 3).Value = RNum
или
wshRoute.Range("AW9").Value = Month & Year
в зависимости от того, существует ли таблица или нет.
Обратите внимание, что:
- Вариант Явная присутствует в верхней части кода.
- Насколько я могу судить, все переменные определены и установлены соответствующим образом.
- Я использовал процесс отладки, и использование «Добавить часы» подтвердило, что wshRoute установлен соответствующим образом, а также RNum, Month и Year.
- wshRoute.Cells (2, 3) .Value возвращает правильное значение, равно как и wshRoute.Range ("AW9").
- Единственное несоответствие, которое я вижу, заключается в том, что, когда я смотрю дальше на свойства wshRoute, свойства OnCalculate до «OnSheetDeactivate» имеют значение. Не уверен, что это актуально или нет.
Этот код работал нормально (я использую примерно год), пока не добавил еще один макрос в начале. Новый макрос открывает другую книгу и создает файлы данных. Он никак не взаимодействует с учебником «Резюме». Если я запустил код без дополнительного нового макроса, он снова будет работать отлично.
Любые предложения, пожалуйста, пропустите их. Это для меня высокий приоритет, поэтому я буду тестировать быстро.
Спасибо, Кэмерон
'открывает другую книгу, чтобы квалифицировать ваши листы с помощью книг:' Set wshRoute = Sheets (NamewshRoute) '. – findwindow
Подождите, что-то подозрительное. Вы устанавливаете 'wshRoute' что-то, а затем сразу после' If wshRoute Is Nothing' ???? – findwindow
Используйте 'Set wshRoute = WorkSheets (NamewshRoute)' вместо 'Set wshRoute = Таблицы (NamewshRoute)'. – PaichengWu