Страницы: 1
RSS
Vba ошибка Object variable not set (Error 91)
 
Здравствуйте!

Есть часть кода:
Код
Application.ScreenUpdating = False
Workbooks.Open Direct
MMBook = ActiveWorkbook.Name
DateSh = Array(1, 2)
For i = 0 To 1
    iRow = 3 'Начало счтетчика для выбора локомотива с БД
    DateSheet = DateSh(i)
    Do Until IsEmpty(Workbooks("Тест.xlsm").Sheets("Локомотив_БД").Cells(iRow, 3))
        Loko = Workbooks("Тест.xlsm").Sheets("Локомотив_БД").Cells(iRow, 3).Value2 
        Area = Workbooks("Тест.xlsm").Sheets("Локомотив_БД").Cells(iRow, 3).Offset(, -1).Value2 
        FIO = Sheets(DateSheet).Columns("A:A").Find(Loko, LookIn:=xlValues).Offset(1, 3).Value2 
        FIO_1 = Sheets(DateSheet).Columns("A:A").Find(Loko, LookIn:=xlValues).Offset(74, 3).Value2  
        FIO_2 = Sheets(DateSheet).Columns("A:A").Find(Loko, LookIn:=xlValues).Offset(59, 3).Value2 
-/-/-/-/-/-/-/-/-

Суть проблемы в следующем Когда i = 0 (первый шаг) DateSheet = 1 программа выполняется, все данные записываются. Но вот на втором шаге когда i=1 DateSheet=2, на строчке FIO = Sheets(DateSheet).Columns("A:A").Find(Loko, LookIn:=xlValues).Offset(1, 3).Value2 возникает ошибка:

Object variable not set (Error 91)
Почему так происходит? Если DateSheet присваивать про сто значения 1, 2, 3, без цикла все работает.
 
Плохое название: что за ошибка? Предложите новое - модераторы поменяют.
И оформляйте код соответствующим тегом - ищите такую кнопку (см. скрин) и исправьте свой пост.
 
-
Изменено: Nordheim - 09.12.2020 14:40:29
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Юрий М написал:
Плохое название: что за ошибка? Предложите новое - модераторы поменяют.
Как название поменять?
 
Хорошо бы еще файл пример увидеть
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Nordheim написал:
И если это отработало, то закомментируйте строку с ошибкой и получите такую же только на следующей строке.
Дело в том что первый цикл со значением 1 отрабатывает, и значение FIO выбирается правильно. А вот на второй инерации при значении i = 2 на строке FIO происходит ошибка. Object variable not set (Error 91)
 
значит
Цитата
Сергей Ко написал:
Как название поменять?
Напишите в сообшении новое название, и модераторы поменяют
А ошибка скорее всего происходит  из за того, что объект не найден, и нечего присваивать., Без файла сложно сказать.
Можете прогнать код с помощью F8 и посмотреть чему равны переменные и находит ли программа в поиске то, что задано как эталон.
Может нет значения Loko на листе, вот и возвращается ошибка.
Изменено: Nordheim - 09.12.2020 11:54:06
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Nordheim написал:
Без файла сложно сказать.
Файл отправить тяжело, сам по себе он работать не будет, так как данные тянет с другого файла, который вешает более 100 мб.
Цитата
Nordheim написал:
А ошибка скорее всего происходит  из за того, что объект не найден
А как так получается что в первый раз находит объект и все отрабатывает, а при второй итерации уже не находит?
 
В общем проблема решилась сама собой :)
изменил строку
DateSh = Array(1, 2)
на
DateSh = Array("1", "2")
и теперь все проходит :)
Цитата
Nordheim
Спасибо! :)
 
Цитата
Сергей Ко написал:
А как так получается что в первый раз находит объект и все отрабатывает, а при второй итерации уже не находит?
Не видно каким образом меняется цикл Do Until, поэтому и написал, что без файла сложно понять, что вообще происходит.
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Юрий М написал:
модераторы поменяют.

Цитата
Сергей Ко написал:
Как название поменять?
А как Вы читаете?
 
Цитата
Юрий М написал:
Плохое название: что за ошибка?
Новое название:

Vba ошибка Object variable not set (Error 91)
 
-
Изменено: Nordheim - 09.12.2020 14:39:55
"Все гениальное просто, а все простое гениально!!!"
Страницы: 1
Наверх