Runtime error 91 object variable or with block variable not set что значит

Обновлено: 05.07.2024

Было:
Dim con As Object
Dim rs As Object

Set con = Application.CurrentProject.Connection
Set rs = CreateObject("ADODB.Recordset")

rs.Open stSql, con, 1 ' 1 = adOpenKeyset

Т.е. Set присутствовал!!

Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset

'Set con = Application.CurrentProject.Connection
'Set rs = CreateObject("ADODB.Recordset")

Я столкнулась с той же проблемой
CreaeObject ВООБЩЕ не создает объектов

Хорошо, Акксесс имеет доступ к объектам АДО без всяких дополнительных телодвижений.

Хорошо, для Екселя например можно исполдьховать подключение серез референсес, уже возникает проблема версий.

Плохо, мне нужно получить доступ к файловой системе
Set fs = CreateObject("Scripting.FileSystemObject") - не работает
то есть даже не мне, а из главного офиса распространяется приложение.
В моем офисе у половины пользователей все хорошо, у другой половины - все плохо.

щас проверю, но, насколько я понимаю, это нужно для создания экземпляра конкретного класса.

А у пользователей ни ексель так не создается, хотя он точно установлен, ни адо объекты. То есть либо CreateObject создает все вышеперечисленное, либо ничего.

щас проверю, но, насколько я понимаю, это нужно для создания экземпляра конкретного класса.

А у пользователей ни ексель так не создается, хотя он точно установлен, ни адо объекты. То есть либо CreateObject создает все вышеперечисленное, либо ничего.

Конечно, обобщение делать логически не корректно, но все же странно.

установлен :(
поставила галку в референсес, убрала к черту этот создатьобъект, написала
. Нью .
работает

всюду один набор. версии VBA и Access одинаковые вплоть до номера сборки

на двух компьютерах (на обном CreateObject нормально, на другом - нет)
такой набор ссылок для одного и того же приложения Access:

Создание переменной объекта состоит из двух шагов. Во-первых необходимо объявить переменную объекта. Затем необходимо назначить правильную ссылку на переменную объекта, используя инструкцию Set.

Аналогично, необходимо инициализировать блок With. End With, выполняя точку входа инструкции With. Эта ошибка имеет следующие причины и решения:

Предпринята попытка использовать переменную объекта, которая еще не ссылается на допустимый объект.

Задайте или повторно задайте ссылку для переменной объекта. Например, если в следующем коде пропущена инструкция Set, для ссылки на MyObject будет сформирована ошибка:

Предпринята попытка использовать переменную объекта, для которой было задано значение Nothing.

Повторно задайте ссылку для переменной объекта. Например, используйте новую инструкцию Set, чтобы задать новую ссылку на объект.

Объект является допустимым объектом, но он не был задан, так как библиотека объектов, в которой он описан, не была выбрана в диалоговом окне Добавление ссылок.

Выберите библиотеку объектов в диалоговом окне Добавление ссылок.

Цель инструкции GoTo находится внутри блока With.

Не следует выполнять переход в блок With. Убедитесь, что блок инициализирован с помощью точки входа инструкции With.

При выборе команды Задать следующий оператор указана строка внутри блока With.

Блок With должен быть инициализирован с помощью выполнения инструкции With.

Для получения дополнительной информации выберите необходимый элемент и нажмите клавишу F1 (для Windows) или HELP (для Macintosh).

Хотите создавать решения, которые расширяют возможности Office на разнообразных платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office занимают меньше места по сравнению с надстройками и решениями VSTO, и вы можете создавать их, используя практически любую технологию веб-программирования, например HTML5, JavaScript, CSS3 и XML.

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Пожалуйста посмотрите файл. Подскажите в чем ошибка.
В комбобоксе выбираю какой либо номер, делаю изменения в текстбоксах (или без изменений) пытаюсь сохранить и вылетает эта ошибка (Run time error 91: Object variable or with block variable non set). По сайтам искал подобные решения, подходящего не нашел. Ну может и руки кривые.

Ошибка Run Time Error 91 (Object variable or block variable not set)
Добрый день! Есть код для VBA Outlook для открытия файла Excel, копирования из него диапазона, и.

Run-time error 91. Object variable or with block variable not set
Добрый день! Я оказался на новом месте, в макросах не разбираюсь совсем. Возникает такая ошибка.

ошибка "Run-time error '91': Object variable or With block variable not set"
приветствую! имеется документ на нескольких листах, заполняется по дням соответственно на многих.

Вот, я вам бесплатно перевел с иностранного..

*Переменная объекта или переменная блока with не заданна*

Решение

пропущена точка перед указанием на столбец, исправьте (во многих местах этого модуля) по типу как:
Ошибка в том, что номер колонки ищется не на нужном скрытом листе AD_EVALUATION_STATUS, а на активном - MAIN (там нет названий колонок во второй строке). Исправленный пример во вложении:

Добавлено через 1 минуту

И за перевод спасибо.
Но английским владею хорошо. Программный язык хромает. ..в следующий раз я вам переведу на албанский.. посмотрим как вы владеете

mc-black, проверил работоспособность. Ошибка не вылетает, однако внесенные изменения тоже не сохраняет.

Добавлено через 7 минут
И интересно почему ищет на активном - MAIN, а не на нужном скрытом листе AD_EVALUATION_STATUS?
Я вроде установил свойство для листа Sheets("AD_EVALUATION_STATUS").Visible = True и активировал его Sheets("AD_EVALUATION_STATUS").Activate

Добавлено через 38 секунд
Антихакер32, как Вы думаете?

Работать с активным листом считается не самым быстрым и надёжным способом. Не вникал особо в код, возможно там в промежутках где-то меняется активный лист. Лучше все объекты диапазонов (Range, Cell(s), Row(s), Column(s)) относить напрямую на объект листа - объектной переменной листа или неименованным объектом в блоке With, то есть после точки.

Добавлено через 1 минуту
Даже вмешательство пользователя во время "долгого" макроса, использующего активные листы/книги/ячейки может повлиять на корректную работу макросов.

Странно что вы пользуетесь активным листом..
обычно при записи макроса пошеться ActiveShet подразумевается что рабочий лист в период выполнения не изменится, а вообще правильнее объявлять Sheets("Лист1")
ну.. кому как нравится, у кого больше свободного времени для исправления проблем ))

Добавлено через 3 минуты
я это знаю потому.. что вообще стараюсь не пользоваться авто-записью макроса..
а если и пользуюсь, то только подсмотреть .. что там буржуйская автоматика пишет, ..куда ссылается )))

Это наиболее распространенное условие «Object variable or With block variable not set», известное как ошибка времени выполнения (ошибка). Разработчики, такие как Microsoft Corporation, обычно проходят через несколько контрольных точек перед запуском программного обеспечения, такого как Windows Operating System. К сожалению, инженеры являются людьми и часто могут делать ошибки во время тестирования, отсутствует ошибка 91.

В выпуске последней версии Windows Operating System может возникнуть ошибка, которая гласит: «There are two steps to creating an object variable. First you must declare the object variable. Then you must assign a valid reference to the object variable using the Set statement. Similarly, a With. End With block must be initialized by executing the ». Если происходит «Object variable or With block variable not set», разработчикам будет сообщено об этой проблеме, хотя отчеты об ошибках встроены в приложение. Затем Microsoft Corporation исправляет эти дефектные записи кода и сделает обновление доступным для загрузки. Таким образом при выполнении обновления программного обеспечения Windows Operating System, он будет содержать исправление для устранения проблем, таких как ошибка 91.

Почему происходит ошибка времени выполнения 91?

Сбой во время запуска Windows Operating System или во время выполнения, как правило, когда вы столкнетесь с «Object variable or With block variable not set». Вот три наиболее заметные причины ошибки ошибки 91 во время выполнения происходят:

Ошибка 91 Crash - она называется «Ошибка 91», когда программа неожиданно завершает работу во время работы (во время выполнения). Это возникает, когда Windows Operating System не реагирует на ввод должным образом или не знает, какой вывод требуется взамен.

Утечка памяти «Object variable or With block variable not set» - Когда Windows Operating System обнаруживает утечку памяти, операционная система постепенно работает медленно, поскольку она истощает системные ресурсы. Потенциальные триггеры могут быть «бесконечным циклом», или когда программа выполняет «цикл» или повторение снова и снова.

Ошибка 91 Logic Error - Логические ошибки проявляются, когда пользователь вводит правильные данные, но устройство дает неверный результат. Это может произойти, когда исходный код Microsoft Corporation имеет уязвимость в отношении передачи данных.

Как правило, такие Microsoft Corporation ошибки возникают из-за повреждённых или отсутствующих файлов Object variable or With block variable not set, а иногда — в результате заражения вредоносным ПО в настоящем или прошлом, что оказало влияние на Windows Operating System. Большую часть проблем, связанных с данными файлами, можно решить посредством скачивания и установки последней версии файла Microsoft Corporation. Кроме того, некоторые ошибки Object variable or With block variable not set могут возникать по причине наличия неправильных ссылок на реестр. По этой причине для очистки недействительных записей рекомендуется выполнить сканирование реестра.

Object variable or With block variable not set Проблемы, связанные с Windows Operating System:

  • «Ошибка программного обеспечения Object variable or With block variable not set. «
  • «Ошибка программного обеспечения Win32: Object variable or With block variable not set»
  • «Извините, Object variable or With block variable not set столкнулся с проблемой. «
  • «Object variable or With block variable not set не может быть найден. «
  • "Отсутствует файл Object variable or With block variable not set."
  • «Ошибка запуска в приложении: Object variable or With block variable not set. «
  • "Файл Object variable or With block variable not set не запущен."
  • "Отказ Object variable or With block variable not set."
  • «Object variable or With block variable not set: путь приложения является ошибкой. «

Ошибки Object variable or With block variable not set EXE возникают во время установки Windows Operating System, при запуске приложений, связанных с Object variable or With block variable not set (Windows Operating System), во время запуска или завершения работы или во время установки ОС Windows. При появлении ошибки Object variable or With block variable not set запишите вхождения для устранения неполадок Windows Operating System и чтобы HelpMicrosoft Corporation найти причину.

Источники проблем Object variable or With block variable not set

Эти проблемы Object variable or With block variable not set создаются отсутствующими или поврежденными файлами Object variable or With block variable not set, недопустимыми записями реестра Windows Operating System или вредоносным программным обеспечением.

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

Ругается на последнюю строку. Это странно т.к. такое значение переменной "Заг" существует - содержится в первой строке, столбце А. Нужна помощь.

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

2 Ответ от Fck_This 02.03.2018 11:14:51

Да, это из ворда запускается.

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

3 Ответ от yshindin 02.03.2018 12:03:46

Действительно, странно. Надеюсь, это VBA-код для Excel?
Я заменил русские идентификаторы английскими, и у меня все проходит и находит ячейку.

4 Ответ от Fck_This 03.03.2018 09:14:20

Run-time error 91. Object variable or with block variable not set (писал по памяти, но думаю всё правильно)

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

5 Ответ от yshindin 03.03.2018 09:45:27

Run-time error 91. Object variable or with block variable not set (писал по памяти, но думаю всё правильно)

6 Ответ от Fck_This 05.03.2018 09:18:56

Run-time error 91. Object variable or with block variable not set (писал по памяти, но думаю всё правильно)

Я так понимаю, имеется в виду
Set ExcelObj = CreateObject("Excel.Application").
Вообще код не мой. Обычно не использую ActiveSheet (вместо этого делаю через назначение Set oList = ). Тем не менее это не объясняет избирательности использования функции. Спасибо за совет.

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

7 Ответ от Fck_This 05.03.2018 10:15:28

И ещё такая проблема. На этот раз код запускается из экселя.

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

8 Ответ от Fck_This 05.03.2018 10:43:23

Так понимаю, что надо указывать другие свойства для поиска по AA - и далее

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

9 Ответ от yshindin 05.03.2018 11:37:48

Я прогнал вот этот код для проверки вашей функции GetColumnAddress и у меня все выдается правильно:

В чем может быть ваша проблема, мне не понятно. Попробуйте подобрать другие варианты реализации этой функции.

10 Ответ от Fck_This 05.03.2018 16:33:29

Я прогнал вот этот код для проверки вашей функции GetColumnAddress и у меня все выдается правильно:

В чем может быть ваша проблема, мне не понятно. Попробуйте подобрать другие варианты реализации этой функции.

Получилось получить только перебором ячеек с выделением
Function GetColumnAddress(ByVal sTarget As String, ByRef oWorkSht As Worksheet)
Dim rCell As Range
Dim sAddr As String
Set rCell = oWorkSht.Rows(1).Find(What:=sTarget, Lookat:=xlWhole)
sAddr = Split(oWorkSht.Cells(rCell.Row, rCell.Column).Address, "$")(1)
GetColumnAddress = sAddr
If sTarget = "Плёнка" Then
Range(sAddr & "1").Select
If Not Selection.Value = "Плёнка" Then
Dim iLastCol, iCell As Integer
iLastCol = Cells.SpecialCells(xlLastCell).Column
iCell = rCell.Column + 1
For i = iCell To iLastCol
sAddr = Split(oWorkSht.Cells(rCell.Row, i).Address, "$")(1)
Range(sAddr & "1").Select
If Selection.Value = "Плёнка" Then
GetColumnAddress = Split(oWorkSht.Cells(rCell.Row, i).Address, "$")(1): Exit Function
End If
Next i
End If
End If
End Function

Подозревал группировку столбцов, но нет. Короче приходится пилить из ..вна и палок. Поэтому вопрос открыт.

Читайте также: