Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
Tim_Coyote
0 / 0 / 0
Регистрация: 10.10.2016
Сообщений: 19
1

Ошибка object variable or with block variable not set

10.10.2016, 13:30. Просмотров 3285. Ответов 16
Метки нет (Все метки)

привет!

Столкнулся с проблемой - пишу код для приведения выгрузки из базы данных в вид для подгрузки в MRP систему

на определенном этапе формируется таблица с датами в первой строке, артикулами в первом столбце и количествами потребления на пересечении строк и столбцов

необходимо опрелелить адрес ячейки с определенной датой и дальше плясать от нее.

(в примере ниже дата произвольная и присваивается изнутри кода, но потом юзер будет вставлять определенную дату в открывающемся окне ввода)

вот такая часть кода

Visual Basic
1
2
3
4
5
Dim dates As Date
dates = "14.10.2016"
Range("A1:XFD1").Find(dates, , xlValues).Select
xa = ActiveCell.Row 'stroka
ya = ActiveCell.Column 'stolbets
и дальше по тексту..

проблема в том, что при присвоении переменной dates определенной даты, возникает ошибка
"object variable or with block variable not set"

то есть, если я присваиваю даты 10.10.2016, 11.10.2016, 12.10.2016 - все работает и макрос выдает конечный нужный результат

но при присвоении даты 13.10.2016 и дальше --> вылазит эта ошибка.

буду благодарен за помощь!
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2016, 13:30
Ответы с готовыми решениями:

Создание класса и ошибка 'object variable or with block variable not set'
Всем привет! Почему когда описываешь класс вот так: Dim a, b, c As Integer Private Sub...

Что за ошибка object variable or with block variable not set
У меня оффис 2010. Подскажите почему выдает ошибку object variable or with block variable not set и...

Ошибка Object variable or With block variable not set
Класс SetOfPoint: Private S As Collection ' Addes point. Public Sub Add(ByRef obj As GPoint)...

ошибка 91 Object variable or With block variable not set
Помогите, пожалуйста. Выдает ошибку Object variable or With block variable not set реакция на...

Ошибка 91: Object variable or With block variable not set
Что за ошибка в коде? Run-time error '91': Object variable or With block variable not set Ошибка...

16
Alex77755
10986 / 3443 / 592
Регистрация: 13.02.2009
Сообщений: 10,225
10.10.2016, 13:40 2
Может стоит между Find и Select добавить проверку нашлось ли чего?

Добавлено через 5 минут
Да и Select нужен ли вообще?
как-то так можно:
Visual Basic
1
2
3
4
Set rx = Range("A1:XFD1").Find(dates, , xlValues)
If rx Is Nothing Then Exit Sub
xa = rx.Row 'stroka
ya = rx.Column 'stolbets
0
Tim_Coyote
0 / 0 / 0
Регистрация: 10.10.2016
Сообщений: 19
10.10.2016, 13:44  [ТС] 3
не стал заморачиваться, ибо все даты фиксированные
дальше по алгоритму суммирование в "искомую" дату потребления всех предыдущих дат

Добавлено через 4 минуты
потестил,

получается примерно то же самое - при присвоении даты 13.10.2016 и дальше rx - nothing и макрос прекращает работу
0
pashulka
3348 / 1795 / 756
Регистрация: 01.12.2010
Сообщений: 3,571
10.10.2016, 13:48 4
А ежели так

Visual Basic
1
Set rx = Range("1:1").Find(dates, , xlFormulas)
0
10.10.2016, 13:48
Tim_Coyote
0 / 0 / 0
Регистрация: 10.10.2016
Сообщений: 19
10.10.2016, 13:59  [ТС] 5
я так понимаю ошибка не в правильности обозначения области, в которой ищется значение, а именно в самом значени
все равно rx присваивается Nothing

чем могут отличаться даты 10.10.2016-12.10.2016 от 13.10.2016- и далее?
0
quende
18 / 18 / 5
Регистрация: 23.04.2014
Сообщений: 72
10.10.2016, 14:12 6
а вот так работает:

Visual Basic
1
2
dates = CDate("14.10.2016")
Set q = Rows("1:1").Find(dates, , xlFormulas)
Наверное именно это имел ввиду pashulka
Цитата Сообщение от pashulka Посмотреть сообщение
А ежели так
только вместо rows написал range
0
Shersh
Заблокирован
10.10.2016, 14:13 7
Tim_Coyote, приложите файл с фрагментом данных и проблемным макросом и получите ответ...
0
pashulka
3348 / 1795 / 756
Регистрация: 01.12.2010
Сообщений: 3,571
10.10.2016, 14:16 8
Tim_Coyote, Диапазон поиска был изменён для того, чтобы макрос работал и в старых версиях Excel, где столбцов было меньше. Что касается даты, то макрос не находит 13-й месяц.

Было бы неплохо увидеть файл, содержащий искомые данные (1 строку достаточно), разумеется, без конфиденциальных данных.
0
Tim_Coyote
0 / 0 / 0
Регистрация: 10.10.2016
Сообщений: 19
10.10.2016, 14:19  [ТС] 9
quende, неа тоже не хочет, так тоже пробовал. rx все равно nothing
Shersh, прикладываю
0
Вложения
Тип файла: xlsx test (2).xlsx (9.4 Кб, 5 просмотров)
pashulka
3348 / 1795 / 756
Регистрация: 01.12.2010
Сообщений: 3,571
10.10.2016, 14:19 10
Цитата Сообщение от quende Посмотреть сообщение
Наверное именно это имел ввиду pashulka
Нет, именно Range. Если бы я хотел указать первую строку, то написал бы Rows(1) , хотя это и непринципиально.
0
quende
18 / 18 / 5
Регистрация: 23.04.2014
Сообщений: 72
10.10.2016, 14:21 11
Цитата Сообщение от Tim_Coyote Посмотреть сообщение
quende, неа тоже не хочет, так тоже пробовал. rx все равно nothing
так работает же...
Visual Basic
1
2
3
4
5
Sub qweqwe()
    dates = CDate("12.10.2016")
    Set rx = Rows("1:1").Find(dates, , xlFormulas)
    Debug.Print rx
End Sub
0
Tim_Coyote
0 / 0 / 0
Регистрация: 10.10.2016
Сообщений: 19
10.10.2016, 14:24  [ТС] 12
quende, 12.10.2016 работает, а начиная с 13.10.2016 не работает

Добавлено через 1 минуту
Цитата Сообщение от pashulka Посмотреть сообщение
что касается даты, то макрос не находит 13-й месяц
то есть возможно это какие-нибудь настройки дат по регионам?
0
quende
18 / 18 / 5
Регистрация: 23.04.2014
Сообщений: 72
10.10.2016, 14:25 13
Цитата Сообщение от Tim_Coyote Посмотреть сообщение
quende, 12.10.2016 работает, а начиная с 13.10.2016 не работает
ну вот же пробую в Вашем же файле!
0
Миниатюры
Ошибка object variable or with block variable not set  
pashulka
3348 / 1795 / 756
Регистрация: 01.12.2010
Сообщений: 3,571
10.10.2016, 14:27 14
Лучший ответ Сообщение было отмечено Tim_Coyote как решение

Решение

Tim_Coyote, Предлагаю альтернативный вариант

Visual Basic
1
2
3
4
5
6
7
Dim dates As Date, iColumn As Variant
dates = #10/14/2016# '"14.10.2016"
 
iColumn = Application.Match(CDbl(dates), [1:1], 0)
If Not IsError(iColumn) Then
   MsgBox "Дата нашлась " & Cells(1, iColumn).Address
End If
0
quende
18 / 18 / 5
Регистрация: 23.04.2014
Сообщений: 72
10.10.2016, 14:28 15
Цитата Сообщение от Tim_Coyote Посмотреть сообщение
то есть возможно это какие-нибудь настройки дат по регионам?
а вот это, кстати, возможно.
задавайте дату через DateValue
Visual Basic
1
DateValue(#10/13/2016#)
0
Tim_Coyote
0 / 0 / 0
Регистрация: 10.10.2016
Сообщений: 19
10.10.2016, 14:44  [ТС] 16
quende, у меня почему-то не работает((
по поводу datevalue погуглю, не знаю что это и как работает

pashulka, альтернативный вариант сработал, только я не до конца понимаю что там происходит, тоже буду разбираться

спасибо большое за помощь!
0
pashulka
3348 / 1795 / 756
Регистрация: 01.12.2010
Сообщений: 3,571
10.10.2016, 14:51 17
Tim_Coyote, Там просто используется стандартная функция рабочего ПОИСКПОЗ()
0
10.10.2016, 14:51
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2016, 14:51

Ошибка: <Object variable or With block variable not set>
Ну что здесь может не нравиться? Set Поиск = Worksheets(&quot;Лист1&quot;).Columns(&quot;H:H&quot;).Find(what:=ячк)...

Ошибка: Object variable or With block variable not set
необходимо создать форму авторизации к access подключила SQL Server(БД находится на нем), в...

Ошибка: Object variable or With block variable not set
всем доброго времени суток! написал макрос для Excel, который из контекстного меню ячейки ищет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.