Объектная переменная не задана ошибка 91

Asked
6 years, 6 months ago

Viewed
5k times

Why is this not working? Run time error 91?

Dim fornameCurr As String
Dim surnameCurr As String
Dim rowCurr As Long

rowCurr = 13
fornameCurr = Activesheet.Cells(rowCurr, 1)    << ERROR HERE
surnameCurr = Activesheet.Cells(rowCurr, 2)

David Zemens's user avatar

David Zemens

52.9k11 gold badges80 silver badges129 bronze badges

asked Nov 21, 2016 at 16:23

Slab's user avatar

11

Runtime error 91 suggests that ActiveSheet Is Nothing (because ActiveSheet is the only presumed Object in the few lines of code you’ve provided, and certainly the only Object on the line raising the error).

Several scenarios I can think of might contribute to this:

  1. The code is being called from an Add-In, in Excel or another application, and no Excel workbooks are open. In this case, there is no ActiveWorkbook and also no ActiveSheet.
  2. The code is being executed from another application (Outlook,
    Access, Word, PowerPoint, etc.), but you’re using the Excel built-in
    ActiveSheet which doesn’t exist in the other applications.
  3. You’ve shadowed the built-in ActiveSheet with Dim Activesheet As
    Worksheet
    and neglected to assign a worksheet object to that variable, so it’s Nothing by default.

Resolutions:

  1. Add logic to check for presence of Workbook object, etc.
  2. Declare a Worksheet object variable and assign to it.
  3. Prefer to avoid shadowing existing built-in names, ensure assignment to the object variable

answered Nov 21, 2016 at 16:40

David Zemens's user avatar

David ZemensDavid Zemens

52.9k11 gold badges80 silver badges129 bronze badges

6

In VB object variables require the Set keyword to be assigned. Object properties that are objects also need to be Set. Runtime error 91 «object variable not set» is raised when the assignment doesn’t use that keyword.

This is inherited from legacy Let keyword to assign values, and Set keyword to assign references; the Let eventually was deprecated (although still needed for defining properties) and the Set remained, leaving the VB6/VBA value assignment syntax like [Let] variable = value, where «Let» is optional.

In the declaration and assignment:

Dim SourceWindow As Window, QACheckWindow As Window
'this is like saying "Let SourceWindow = ActiveWindow":
SourceWindow = ActiveWindow

SourceWindow is an object, assigned as if it were a value — this causes VBA to attempt let-coercion through a default member call. If the object wasn’t initialized, the member call fails with error 91. If the object was initialized but doesn’t have a default member, error 438 is raised.

So in this case error 91 is being raised because of an implicit member call; the .net equivalent would be a NullReferenceException:

Dim SourceWindow As Window, Dim WindowTitle As String
'"SourceWindow" reference isn't set, the object can't be accessed yet:
WindowTitle = SourceWindow.Caption 

I’m going to go a bit overboard here, but the legacy Let statement should not be confused with the Let clause (in VB.net) which, in the LINQ query syntax (in VB.net), computes a value and assigns it to a new, query-scoped variable (example taken from MSDN):

From p In products 
Let Discount = p.UnitPrice*0.1 '"Discount" is only available within the query!
Where Discount >= 50
Select p.ProductName, p.UnitPrice, Discount

VB.net assigns both values and references, without the need to specify a Let or a Set, because in .net this distinction is a much thinner line, given how everything ultimately derives from System.Object… including System.ValueType. That’s why the Set keyword was also deprecated in VB.net, and also why the VB.net syntax for defining properties has dropped the Let in favor of Set — because parameterless default members are illegal in VB.NET, so this ambiguous let-coercion doesn’t happen.

Example

Incorrect code

Sub DoSomething()
    Dim foo As Collection
    With foo
        .Add "ABC"
        .Add "XYZ"
    End With
End Sub

Why doesn’t this work?

Object variables hold a reference, and references need to be set using the Set keyword. This error occurs whenever a member call is made on an object whose reference is Nothing. In this case foo is a Collection reference, but it’s not initialized, so the reference contains Nothing — and we can’t call .Add on Nothing.

Correct code

Sub DoSomething()
    Dim foo As Collection
    Set foo = New Collection
    With foo
        .Add "ABC"
        .Add "XYZ"
    End With
End Sub

Why does this work?

By assigning the object variable a valid reference using the Set keyword, the .Add calls succeed.

Other notes

Often, a function or property can return an object reference — a common example is Excel’s Range.Find method, which returns a Range object:

Dim resultRow As Long
resultRow = SomeSheet.Cells.Find("Something").Row

However the function can very well return Nothing (if the search term isn’t found), so it’s likely that the chained .Row member call fails.

Before calling object members, verify that the reference is set with a If Not xxxx Is Nothing condition:

Dim result As Range
Set result = SomeSheet.Cells.Find("Something")

Dim resultRow As Long
If Not result Is Nothing Then resultRow = result.Row

 

yushkov

Пользователь

Сообщений: 11
Регистрация: 19.07.2014

#1

27.02.2019 12:07:32

Здравствуйте!
Имеется файл с макросом поиска. Поиск работает следующим образом: на листе «Поиск» через «да/нет» отмечаешь элементы, которые требуется найти, а макрос ищет данные элементы в ячейках заданного диапазона на всех листах книги.

Проблема:

если в файле на любом листе внести какие-либо изменения (добавить текст в ячейку) или же просто открыть и закрыть ячейку без внесения изменений, то при последующем запуске макроса появляется ошибка Run-time error ’91 Object variable or With block variable not set’ (ошибка появляется в строке Loop While iFoundRng.Address <> firstAddress). До этого макрос работает нормально.
Файл примера приложил.
Вот код:

Код
Sub Поиск()
Dim iFoundRng As Range
Dim iSheet As Worksheet
Dim iFoundSht As Worksheet
Dim firstAddress As String
Dim TextToFind As Variant
Dim TextToFindA As Variant
Dim i As Variant
Dim iLastRow As Long
    
    Set iFoundSht = Sheets("Поиск") 'лист "Поиск" присваиваем переменной
    iFoundSht.Range("F3:F5000").Clear 'очищаем диапазон ячеек на листе Поиск
    TextToFindA = iFoundSht.Range("A2:B38") 'здесь задайте диапазон поиска+критериев отбора "да/нет", можно через InputBox
    For i = 1 To UBound(TextToFindA, 1)
        If TextToFindA(i, 2) = "да" Then TextToFind = TextToFind & "*" & Trim(TextToFindA(i, 1))
    Next i
    If TextToFind = "" Or TextToFind = False Then Exit Sub 'если ничего не ввели - Выход!
    TextToFind = Trim(TextToFind) 'убираем начальные и конечные пробелы
    Application.ScreenUpdating = False 'отключаем обновление экрана
    For Each iSheet In ThisWorkbook.Worksheets 'поиск по листам
        If iSheet.Name <> iFoundSht.Name Then
            If iSheet.FilterMode = True Then iSheet.ShowAllData 'если на листе установлен автофильтр, то снимаем его
            Set iFoundRng = iSheet.Range("A1:A10000").Find(TextToFind, , xlFormulas, xlPart)
            If Not iFoundRng Is Nothing Then 'если нашли
                firstAddress = iFoundRng.Address 'запоминаем адрес найденной ячейки, чтобы продолжить поиск по листу
                Do
                    With iFoundSht
                        iLastRow = .Cells(.Rows.Count, 6).End(xlUp).Row 'определяем последнюю заполненную строку на листе поиск
                        If iLastRow = 2 Then iLastRow = 3 'если лист пуст, то вставлять будем начиная с 4-й строки
                            With .Cells(iLastRow + 1, 6) 'проставляем имя листа
                                .Value = iFoundRng.Text
                                'добавляем гиперссылку
                                iFoundSht.Hyperlinks.Add Anchor:=iFoundSht.Cells(iLastRow + 1, 6), Address:="", _
                                    SubAddress:="'" & iSheet.Name & "'" & "!" & iFoundRng.Address, ScreenTip:="Перейти на лист " & iSheet.Name
                                '.Font.Bold = True 'выделяем жирным
                            End With
                    End With
                    Set iFoundRng = iSheet.Range("A1:A10000").FindNext(iFoundRng) 'продолжаем поиск на том же листе
                Loop While iFoundRng.Address <> firstAddress
            End If
        End If
    Next iSheet
    Application.ScreenUpdating = True 'включаем обновление экрана
    MsgBox "Поиск завершён!", 64, "Поиск"
End Sub

Прикрепленные файлы

  • Файл Примера.xlsm (50.31 КБ)

 

skais675

Пользователь

Сообщений: 2189
Регистрация: 03.06.2014

У меня работает отлично! Лучше выложите рядом и нерабочий пример.

Изменено: skais67527.02.2019 12:14:49

 

yushkov

Пользователь

Сообщений: 11
Регистрация: 19.07.2014

Дак я и приложил тот файл, в котором возникает ошибка.

Попробовал запускать данный макрос на компьютерах коллег — у них всё работает хорошо, без ошибок. Значит, я так полагаю, проблема не в макросе, а в Excel на моем компе. Но что вызывает такую ошибку, может кто-нибудь знает?

 

_Igor_61

Пользователь

Сообщений: 3007
Регистрация: 18.07.2016

yushkov, добрый вечер!

Довольно часто подобные вопросы возникают. Я не профи в компьютерной сфере, но исходя их опыта обычного пользователя уже давно сделал для себя вывод (это только ИМХО): вопрос скорее философский, нежели технический. Первое стандартное средство — переустановка программы (и хорошо, что в большинстве случаев помогает). Но почему она раньше работала отлично, а потом вдруг начинает косячить? Есть куча объяснений, но далеко не всегда они объясняют всё и вся. Возможно, изготовители железа и разработчики программ используют только экспериментальный опыт, а он не во всех ситуациях оказывается верным. Т.е. знаем: если сделать то-то и то-то, получается такой-то результат. (сравнение: если потереть ладони — почувствуешь, что они нагрелись). А вот почему так получается? Пока не будет знания об этом «почему», будут возникать и подобные вопросы. Живую клетку еще никому не удалось создать из ничего, возможно и тут что-то подобное. Возможно, камень не такой попался, не так на команды реагирует…  :)

повторюсь: ИМХО

 

Alec Perle

Пользователь

Сообщений: 172
Регистрация: 13.07.2018

#5

27.02.2019 21:11:55

А что при ошибке содержится в переменной iFoundRng?
Не смог воспроизвести ошибку, но в любом случае, если нет уверенности в существовании объекта при обращении к его свойствам не помешает его проверить. Даже в примере к справке такая проверка есть:

Код
'Example
'This example finds all cells in the range A1:A500 that contain the 
'value 2 and changes their values to 5.
With Worksheets(1).Range("a1:a500")
    Set c = .Find(2, lookin:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            c.Value = 5
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With

В Вашем случае проблемную строку нужно заменить на

Код
Loop While Not iFoundRng Is Nothing And iFoundRng.Address <> firstAddress
 

yushkov

Пользователь

Сообщений: 11
Регистрация: 19.07.2014

Alec Perle

, при ошибке iFoundRng = Nothing.
Замена проблемной строки на предложенную Вами результата не дала.

Ещё заметил такую особенность: если внести изменения в какую-нибудь ячейку, сохраниться, закрыть файл, а потом снова открыть файл — то макрос работает без ошибок.

Изменено: yushkov28.02.2019 06:33:03

 

Казанский

Пользователь

Сообщений: 8839
Регистрация: 11.01.2013

#7

28.02.2019 09:42:14

Цитата
Alec Perle написал:
Даже в примере к справке такая проверка есть

Пример плохой, он вызывает ошибку 91, можете убедиться.
Если c является Nothing, то c.Address вызывает ошибку, эти две проверки нельзя совмещать в одном выражении. Следовало бы написать так

Код
With Worksheets(1).Range("a1:a500")
    Set c = .Find(2, LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            c.Value = 5
            Set c = .FindNext(c)
            If c Is Nothing Then Exit Do
        Loop While c.Address <> firstAddress
    End If
End With

Изменено: Казанский28.02.2019 09:44:52

 

yushkov

Пользователь

Сообщений: 11
Регистрация: 19.07.2014

Казанский

, изменил код как Вы предложили — ошибка 91 перестала выскакивать. Спасибо.  :)

Но теперь возникла другая проблема:
Например, искомое сочетание «Элемент1 + Элемент5».
Запускаю макрос — он находит 12 результатов («Элемент1 + Элемент5», «Элемент1 + Элемент2 + Элемент5», «Элемент1 + Элемент3 + Элемент5» и др.). Это правильно.
Затем вношу изменения на каком-либо листе, которые никак не должны влиять на результаты поиска, и снова запускаю макрос. И теперь он находит только один результат — «Элемент1 + Элемент5».
Почему может быть так?

 

БМВ

Модератор

Сообщений: 21657
Регистрация: 28.12.2016

Excel 2013, 2016

yushkov, просто для эксперимента попробуйте этот файл, там почти ничего не изменялось

По вопросам из тем форума, личку не читаю.

 

yushkov

Пользователь

Сообщений: 11
Регистрация: 19.07.2014

БМВ

, попробовал Ваш файл.
Проблема, описанная в сообщении №8, осталась.

 

БМВ

Модератор

Сообщений: 21657
Регистрация: 28.12.2016

Excel 2013, 2016

yushkov, все ведет к тому что проблема в конкретном экземпляре ПК. Я так понимаю, что никто не смог воспроизвести ошибку. Я б рекомендовал для начала проверку памяти, потом полную перестановку , но только с

чисткой

.
Складывается ощущение, что при определенных действиях поиск просто не находит или не возвращает найденное и так как ранее это контролировалось только на первом поиске, а при повторном уже ловилось нахождение первого значения, то при повторном происходил сбой, сейчас сбой убрали, но обеспечили завершение работы сразу при первом негативном поиске, а это привело к неполному результату.

Изменено: БМВ01.03.2019 07:45:14

По вопросам из тем форума, личку не читаю.

 

_Igor_61

Пользователь

Сообщений: 3007
Регистрация: 18.07.2016

#12

01.03.2019 18:37:10

Только что наткнулся на интересную

статью

, возможно это о том, о чем в #4

В этой статье представлена ошибка с номером Ошибка 91, известная как Переменная объекта или переменная блока не задана, описанная как Чтобы создать объектную переменную, нужно выполнить два шага. Сначала вы должны объявить объектную переменную. Затем вы должны назначить действительную ссылку на объектную переменную с помощью оператора Set. Аналогично, блок With … End With должен быть инициализирован путем выполнения

О программе Runtime Ошибка 91

Время выполнения Ошибка 91 происходит, когда Windows дает сбой или падает во время запуска, отсюда и название. Это не обязательно означает, что код был каким-то образом поврежден, просто он не сработал во время выполнения. Такая ошибка появляется на экране в виде раздражающего уведомления, если ее не устранить. Вот симптомы, причины и способы устранения проблемы.

Определения (Бета)

Здесь мы приводим некоторые определения слов, содержащихся в вашей ошибке, в попытке помочь вам понять вашу проблему. Эта работа продолжается, поэтому иногда мы можем неправильно определить слово, так что не стесняйтесь пропустить этот раздел!

  • Назначить — что-то, что связано с операцией присваивания, т. е. процессом изменения содержимого переменной для отражения некоторого заданного значения.
  • Блок < / b> — этот тег записывается, потому что он может относиться ко многим различным вещам в зависимости от использования с ним других тегов.
  • Объявить — используйте этот тег для вопросов, связанных с declare, который обычно предназначен для объявления переменных, операторов и т. д.
  • Object — объект — это любой объект, которым можно управлять с помощью команд на языке программирования.
  • < li> Ссылка. Ссылка — это значение, которое позволяет программе косвенно обращаться к определенным данным, таким как переменная или запись, в памяти компьютера или в каком-либо другом запоминающем устройстве.

  • Набор — набор — это набор, в котором ни один элемент не повторяется, который может иметь возможность перечислять свои элементы в соответствии с критерием упорядочения «упорядоченный набор» или не сохранять порядок «неупорядоченный набор». «.
  • Переменная — ЭТО НЕОБХОДИМО ; ИСПОЛЬЗУЙТЕ КОНКРЕТНЫЕ ЯЗЫКОВЫЕ ТЭГИ, ЕСЛИ ПРИМЕНИМО

Симптомы Ошибка 91 — Переменная объекта или переменная блока не задана

Ошибки времени выполнения происходят без предупреждения. Сообщение об ошибке может появиться на экране при любом запуске %программы%. Фактически, сообщение об ошибке или другое диалоговое окно может появляться снова и снова, если не принять меры на ранней стадии.

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

Fix Переменная объекта или переменная блока не задана (Error Ошибка 91)
(Только для примера)

Причины Переменная объекта или переменная блока не задана — Ошибка 91

При разработке программного обеспечения программисты составляют код, предвидя возникновение ошибок. Однако идеальных проектов не бывает, поскольку ошибки можно ожидать даже при самом лучшем дизайне программы. Глюки могут произойти во время выполнения программы, если определенная ошибка не была обнаружена и устранена во время проектирования и тестирования.

Ошибки во время выполнения обычно вызваны несовместимостью программ, запущенных в одно и то же время. Они также могут возникать из-за проблем с памятью, плохого графического драйвера или заражения вирусом. Каким бы ни был случай, проблему необходимо решить немедленно, чтобы избежать дальнейших проблем. Ниже приведены способы устранения ошибки.

Методы исправления

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

Если метод ремонта вам подошел, пожалуйста, нажмите кнопку upvote слева от ответа, это позволит другим пользователям узнать, какой метод ремонта на данный момент работает лучше всего.

Обратите внимание: ни ErrorVault.com, ни его авторы не несут ответственности за результаты действий, предпринятых при использовании любого из методов ремонта, перечисленных на этой странице — вы выполняете эти шаги на свой страх и риск.

Метод 1 — Закройте конфликтующие программы

Когда вы получаете ошибку во время выполнения, имейте в виду, что это происходит из-за программ, которые конфликтуют друг с другом. Первое, что вы можете сделать, чтобы решить проблему, — это остановить эти конфликтующие программы.

  • Откройте диспетчер задач, одновременно нажав Ctrl-Alt-Del. Это позволит вам увидеть список запущенных в данный момент программ.
  • Перейдите на вкладку «Процессы» и остановите программы одну за другой, выделив каждую программу и нажав кнопку «Завершить процесс».
  • Вам нужно будет следить за тем, будет ли сообщение об ошибке появляться каждый раз при остановке процесса.
  • Как только вы определите, какая программа вызывает ошибку, вы можете перейти к следующему этапу устранения неполадок, переустановив приложение.

Метод 2 — Обновите / переустановите конфликтующие программы

Использование панели управления

  • В Windows 7 нажмите кнопку «Пуск», затем нажмите «Панель управления», затем «Удалить программу».
  • В Windows 8 нажмите кнопку «Пуск», затем прокрутите вниз и нажмите «Дополнительные настройки», затем нажмите «Панель управления»> «Удалить программу».
  • Для Windows 10 просто введите «Панель управления» в поле поиска и щелкните результат, затем нажмите «Удалить программу».
  • В разделе «Программы и компоненты» щелкните проблемную программу и нажмите «Обновить» или «Удалить».
  • Если вы выбрали обновление, вам просто нужно будет следовать подсказке, чтобы завершить процесс, однако, если вы выбрали «Удалить», вы будете следовать подсказке, чтобы удалить, а затем повторно загрузить или использовать установочный диск приложения для переустановки. программа.

Использование других методов

  • В Windows 7 список всех установленных программ можно найти, нажав кнопку «Пуск» и наведя указатель мыши на список, отображаемый на вкладке. Вы можете увидеть в этом списке утилиту для удаления программы. Вы можете продолжить и удалить с помощью утилит, доступных на этой вкладке.
  • В Windows 10 вы можете нажать «Пуск», затем «Настройка», а затем — «Приложения».
  • Прокрутите вниз, чтобы увидеть список приложений и функций, установленных на вашем компьютере.
  • Щелкните программу, которая вызывает ошибку времени выполнения, затем вы можете удалить ее или щелкнуть Дополнительные параметры, чтобы сбросить приложение.

Метод 3 — Обновите программу защиты от вирусов или загрузите и установите последнюю версию Центра обновления Windows.

Заражение вирусом, вызывающее ошибку выполнения на вашем компьютере, необходимо немедленно предотвратить, поместить в карантин или удалить. Убедитесь, что вы обновили свою антивирусную программу и выполнили тщательное сканирование компьютера или запустите Центр обновления Windows, чтобы получить последние определения вирусов и исправить их.

Метод 4 — Переустановите библиотеки времени выполнения

Вы можете получить сообщение об ошибке из-за обновления, такого как пакет MS Visual C ++, который может быть установлен неправильно или полностью. Что вы можете сделать, так это удалить текущий пакет и установить новую копию.

  • Удалите пакет, выбрав «Программы и компоненты», найдите и выделите распространяемый пакет Microsoft Visual C ++.
  • Нажмите «Удалить» в верхней части списка и, когда это будет сделано, перезагрузите компьютер.
  • Загрузите последний распространяемый пакет от Microsoft и установите его.

Метод 5 — Запустить очистку диска

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

  • Вам следует подумать о резервном копировании файлов и освобождении места на жестком диске.
  • Вы также можете очистить кеш и перезагрузить компьютер.
  • Вы также можете запустить очистку диска, открыть окно проводника и щелкнуть правой кнопкой мыши по основному каталогу (обычно это C :)
  • Щелкните «Свойства», а затем — «Очистка диска».

Метод 6 — Переустановите графический драйвер

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

  • Откройте диспетчер устройств и найдите драйвер видеокарты.
  • Щелкните правой кнопкой мыши драйвер видеокарты, затем нажмите «Удалить», затем перезагрузите компьютер.

Метод 7 — Ошибка выполнения, связанная с IE

Если полученная ошибка связана с Internet Explorer, вы можете сделать следующее:

  1. Сбросьте настройки браузера.
    • В Windows 7 вы можете нажать «Пуск», перейти в «Панель управления» и нажать «Свойства обозревателя» слева. Затем вы можете перейти на вкладку «Дополнительно» и нажать кнопку «Сброс».
    • Для Windows 8 и 10 вы можете нажать «Поиск» и ввести «Свойства обозревателя», затем перейти на вкладку «Дополнительно» и нажать «Сброс».
  2. Отключить отладку скриптов и уведомления об ошибках.
    • В том же окне «Свойства обозревателя» можно перейти на вкладку «Дополнительно» и найти пункт «Отключить отладку сценария».
    • Установите флажок в переключателе.
    • Одновременно снимите флажок «Отображать уведомление о каждой ошибке сценария», затем нажмите «Применить» и «ОК», затем перезагрузите компьютер.

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

Другие языки:

How to fix Error 91 (Object variable or With block variable not set) — 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
Wie beheben Fehler 91 (Objektvariable oder With-Blockvariable nicht gesetzt) — Es gibt zwei Schritte, um eine Objektvariable zu erstellen. Zuerst müssen Sie die Objektvariable deklarieren. Anschließend müssen Sie der Objektvariablen mit der Set-Anweisung eine gültige Referenz zuweisen. Ebenso muss ein With…End With-Block initialisiert werden, indem die
Come fissare Errore 91 (Variabile oggetto o Con variabile di blocco non impostata) — Ci sono due passaggi per creare una variabile oggetto. Per prima cosa devi dichiarare la variabile oggetto. Quindi è necessario assegnare un riferimento valido alla variabile oggetto utilizzando l’istruzione Set. Allo stesso modo, un blocco With…End With deve essere inizializzato eseguendo il comando
Hoe maak je Fout 91 (Object variabele of met blok variabele niet ingesteld) — Er zijn twee stappen om een ​​objectvariabele te maken. Eerst moet u de objectvariabele declareren. Vervolgens moet u een geldige verwijzing naar de objectvariabele toewijzen met behulp van de Set-instructie. Op dezelfde manier moet een With…End With-blok worden geïnitialiseerd door de
Comment réparer Erreur 91 (Variable objet ou Variable avec bloc non définie) — Il y a deux étapes pour créer une variable d’objet. Vous devez d’abord déclarer la variable objet. Ensuite, vous devez affecter une référence valide à la variable objet à l’aide de l’instruction Set. De même, un bloc With…End With doit être initialisé en exécutant la commande
어떻게 고치는 지 오류 91 (개체 변수 또는 With 블록 변수가 설정되지 않았습니다.) — 개체 변수를 만드는 데는 두 단계가 있습니다. 먼저 객체 변수를 선언해야 합니다. 그런 다음 Set 문을 사용하여 개체 변수에 유효한 참조를 할당해야 합니다. 마찬가지로 With…End With 블록은 다음을 실행하여 초기화해야 합니다.
Como corrigir o Erro 91 (Variável de objeto ou com variável de bloco não definida) — Existem duas etapas para criar uma variável de objeto. Primeiro você deve declarar a variável do objeto. Em seguida, você deve atribuir uma referência válida à variável de objeto usando a instrução Set. Da mesma forma, um bloco With … End With deve ser inicializado executando o
Hur man åtgärdar Fel 91 (Objektvariabel eller Med blockvariabel ej inställd) — Det finns två steg för att skapa en objektvariabel. Först måste du deklarera objektvariabeln. Sedan måste du tilldela en giltig referens till objektvariabeln med Set -satsen. På samma sätt måste ett With … End With block initieras genom att köra
Jak naprawić Błąd 91 (Zmienna obiektu lub Zmienna blokowa nie jest ustawiona) — Tworzenie zmiennej obiektowej składa się z dwóch kroków. Najpierw musisz zadeklarować zmienną obiektu. Następnie należy przypisać prawidłowe odwołanie do zmiennej obiektu za pomocą instrukcji Set. Podobnie blok With…End With musi zostać zainicjowany przez wykonanie
Cómo arreglar Error 91 (Variable de objeto o con variable de bloque no establecida) — Hay dos pasos para crear una variable de objeto. Primero debes declarar la variable de objeto. Luego debe asignar una referencia válida a la variable de objeto usando la instrucción Set. De manera similar, un bloque With … End With debe inicializarse ejecutando el

The Author
(Только для примера)

Причины Переменная объекта или переменная блока не задана — Ошибка 91

При разработке программного обеспечения программисты составляют код, предвидя возникновение ошибок. Однако идеальных проектов не бывает, поскольку ошибки можно ожидать даже при самом лучшем дизайне программы. Глюки могут произойти во время выполнения программы, если определенная ошибка не была обнаружена и устранена во время проектирования и тестирования.

Ошибки во время выполнения обычно вызваны несовместимостью программ, запущенных в одно и то же время. Они также могут возникать из-за проблем с памятью, плохого графического драйвера или заражения вирусом. Каким бы ни был случай, проблему необходимо решить немедленно, чтобы избежать дальнейших проблем. Ниже приведены способы устранения ошибки.

Методы исправления

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

Если метод ремонта вам подошел, пожалуйста, нажмите кнопку upvote слева от ответа, это позволит другим пользователям узнать, какой метод ремонта на данный момент работает лучше всего.

Обратите внимание: ни ErrorVault.com, ни его авторы не несут ответственности за результаты действий, предпринятых при использовании любого из методов ремонта, перечисленных на этой странице — вы выполняете эти шаги на свой страх и риск.

Метод 1 — Закройте конфликтующие программы

Когда вы получаете ошибку во время выполнения, имейте в виду, что это происходит из-за программ, которые конфликтуют друг с другом. Первое, что вы можете сделать, чтобы решить проблему, — это остановить эти конфликтующие программы.

  • Откройте диспетчер задач, одновременно нажав Ctrl-Alt-Del. Это позволит вам увидеть список запущенных в данный момент программ.
  • Перейдите на вкладку «Процессы» и остановите программы одну за другой, выделив каждую программу и нажав кнопку «Завершить процесс».
  • Вам нужно будет следить за тем, будет ли сообщение об ошибке появляться каждый раз при остановке процесса.
  • Как только вы определите, какая программа вызывает ошибку, вы можете перейти к следующему этапу устранения неполадок, переустановив приложение.

Метод 2 — Обновите / переустановите конфликтующие программы

Использование панели управления

  • В Windows 7 нажмите кнопку «Пуск», затем нажмите «Панель управления», затем «Удалить программу».
  • В Windows 8 нажмите кнопку «Пуск», затем прокрутите вниз и нажмите «Дополнительные настройки», затем нажмите «Панель управления»> «Удалить программу».
  • Для Windows 10 просто введите «Панель управления» в поле поиска и щелкните результат, затем нажмите «Удалить программу».
  • В разделе «Программы и компоненты» щелкните проблемную программу и нажмите «Обновить» или «Удалить».
  • Если вы выбрали обновление, вам просто нужно будет следовать подсказке, чтобы завершить процесс, однако, если вы выбрали «Удалить», вы будете следовать подсказке, чтобы удалить, а затем повторно загрузить или использовать установочный диск приложения для переустановки. программа.

Использование других методов

  • В Windows 7 список всех установленных программ можно найти, нажав кнопку «Пуск» и наведя указатель мыши на список, отображаемый на вкладке. Вы можете увидеть в этом списке утилиту для удаления программы. Вы можете продолжить и удалить с помощью утилит, доступных на этой вкладке.
  • В Windows 10 вы можете нажать «Пуск», затем «Настройка», а затем — «Приложения».
  • Прокрутите вниз, чтобы увидеть список приложений и функций, установленных на вашем компьютере.
  • Щелкните программу, которая вызывает ошибку времени выполнения, затем вы можете удалить ее или щелкнуть Дополнительные параметры, чтобы сбросить приложение.

Метод 3 — Обновите программу защиты от вирусов или загрузите и установите последнюю версию Центра обновления Windows.

Заражение вирусом, вызывающее ошибку выполнения на вашем компьютере, необходимо немедленно предотвратить, поместить в карантин или удалить. Убедитесь, что вы обновили свою антивирусную программу и выполнили тщательное сканирование компьютера или запустите Центр обновления Windows, чтобы получить последние определения вирусов и исправить их.

Метод 4 — Переустановите библиотеки времени выполнения

Вы можете получить сообщение об ошибке из-за обновления, такого как пакет MS Visual C ++, который может быть установлен неправильно или полностью. Что вы можете сделать, так это удалить текущий пакет и установить новую копию.

  • Удалите пакет, выбрав «Программы и компоненты», найдите и выделите распространяемый пакет Microsoft Visual C ++.
  • Нажмите «Удалить» в верхней части списка и, когда это будет сделано, перезагрузите компьютер.
  • Загрузите последний распространяемый пакет от Microsoft и установите его.

Метод 5 — Запустить очистку диска

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

  • Вам следует подумать о резервном копировании файлов и освобождении места на жестком диске.
  • Вы также можете очистить кеш и перезагрузить компьютер.
  • Вы также можете запустить очистку диска, открыть окно проводника и щелкнуть правой кнопкой мыши по основному каталогу (обычно это C :)
  • Щелкните «Свойства», а затем — «Очистка диска».

Метод 6 — Переустановите графический драйвер

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

  • Откройте диспетчер устройств и найдите драйвер видеокарты.
  • Щелкните правой кнопкой мыши драйвер видеокарты, затем нажмите «Удалить», затем перезагрузите компьютер.

Метод 7 — Ошибка выполнения, связанная с IE

Если полученная ошибка связана с Internet Explorer, вы можете сделать следующее:

  1. Сбросьте настройки браузера.
    • В Windows 7 вы можете нажать «Пуск», перейти в «Панель управления» и нажать «Свойства обозревателя» слева. Затем вы можете перейти на вкладку «Дополнительно» и нажать кнопку «Сброс».
    • Для Windows 8 и 10 вы можете нажать «Поиск» и ввести «Свойства обозревателя», затем перейти на вкладку «Дополнительно» и нажать «Сброс».
  2. Отключить отладку скриптов и уведомления об ошибках.
    • В том же окне «Свойства обозревателя» можно перейти на вкладку «Дополнительно» и найти пункт «Отключить отладку сценария».
    • Установите флажок в переключателе.
    • Одновременно снимите флажок «Отображать уведомление о каждой ошибке сценария», затем нажмите «Применить» и «ОК», затем перезагрузите компьютер.

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

Другие языки:

How to fix Error 91 (Object variable or With block variable not set) — 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
Wie beheben Fehler 91 (Objektvariable oder With-Blockvariable nicht gesetzt) — Es gibt zwei Schritte, um eine Objektvariable zu erstellen. Zuerst müssen Sie die Objektvariable deklarieren. Anschließend müssen Sie der Objektvariablen mit der Set-Anweisung eine gültige Referenz zuweisen. Ebenso muss ein With…End With-Block initialisiert werden, indem die
Come fissare Errore 91 (Variabile oggetto o Con variabile di blocco non impostata) — Ci sono due passaggi per creare una variabile oggetto. Per prima cosa devi dichiarare la variabile oggetto. Quindi è necessario assegnare un riferimento valido alla variabile oggetto utilizzando l’istruzione Set. Allo stesso modo, un blocco With…End With deve essere inizializzato eseguendo il comando
Hoe maak je Fout 91 (Object variabele of met blok variabele niet ingesteld) — Er zijn twee stappen om een ​​objectvariabele te maken. Eerst moet u de objectvariabele declareren. Vervolgens moet u een geldige verwijzing naar de objectvariabele toewijzen met behulp van de Set-instructie. Op dezelfde manier moet een With…End With-blok worden geïnitialiseerd door de
Comment réparer Erreur 91 (Variable objet ou Variable avec bloc non définie) — Il y a deux étapes pour créer une variable d’objet. Vous devez d’abord déclarer la variable objet. Ensuite, vous devez affecter une référence valide à la variable objet à l’aide de l’instruction Set. De même, un bloc With…End With doit être initialisé en exécutant la commande
어떻게 고치는 지 오류 91 (개체 변수 또는 With 블록 변수가 설정되지 않았습니다.) — 개체 변수를 만드는 데는 두 단계가 있습니다. 먼저 객체 변수를 선언해야 합니다. 그런 다음 Set 문을 사용하여 개체 변수에 유효한 참조를 할당해야 합니다. 마찬가지로 With…End With 블록은 다음을 실행하여 초기화해야 합니다.
Como corrigir o Erro 91 (Variável de objeto ou com variável de bloco não definida) — Existem duas etapas para criar uma variável de objeto. Primeiro você deve declarar a variável do objeto. Em seguida, você deve atribuir uma referência válida à variável de objeto usando a instrução Set. Da mesma forma, um bloco With … End With deve ser inicializado executando o
Hur man åtgärdar Fel 91 (Objektvariabel eller Med blockvariabel ej inställd) — Det finns två steg för att skapa en objektvariabel. Först måste du deklarera objektvariabeln. Sedan måste du tilldela en giltig referens till objektvariabeln med Set -satsen. På samma sätt måste ett With … End With block initieras genom att köra
Jak naprawić Błąd 91 (Zmienna obiektu lub Zmienna blokowa nie jest ustawiona) — Tworzenie zmiennej obiektowej składa się z dwóch kroków. Najpierw musisz zadeklarować zmienną obiektu. Następnie należy przypisać prawidłowe odwołanie do zmiennej obiektu za pomocą instrukcji Set. Podobnie blok With…End With musi zostać zainicjowany przez wykonanie
Cómo arreglar Error 91 (Variable de objeto o con variable de bloque no establecida) — Hay dos pasos para crear una variable de objeto. Primero debes declarar la variable de objeto. Luego debe asignar una referencia válida a la variable de objeto usando la instrucción Set. De manera similar, un bloque With … End With debe inicializarse ejecutando el

Об авторе: Фил Харт является участником сообщества Microsoft с 2010 года. С текущим количеством баллов более 100 000 он внес более 3000 ответов на форумах Microsoft Support и создал почти 200 новых справочных статей в Technet Wiki.

Следуйте за нами: Facebook Youtube Twitter

Последнее обновление:

24/10/22 12:05 : Пользователь Windows 10 проголосовал за то, что метод восстановления 4 работает для него.

Рекомендуемый инструмент для ремонта:

Этот инструмент восстановления может устранить такие распространенные проблемы компьютера, как синие экраны, сбои и замораживание, отсутствующие DLL-файлы, а также устранить повреждения от вредоносных программ/вирусов и многое другое путем замены поврежденных и отсутствующих системных файлов.

ШАГ 1:

Нажмите здесь, чтобы скачать и установите средство восстановления Windows.

ШАГ 2:

Нажмите на Start Scan и позвольте ему проанализировать ваше устройство.

ШАГ 3:

Нажмите на Repair All, чтобы устранить все обнаруженные проблемы.

СКАЧАТЬ СЕЙЧАС

Совместимость

Требования

1 Ghz CPU, 512 MB RAM, 40 GB HDD
Эта загрузка предлагает неограниченное бесплатное сканирование ПК с Windows. Полное восстановление системы начинается от $19,95.

ID статьи: ACX09108RU

Применяется к: Windows 10, Windows 8.1, Windows 7, Windows Vista, Windows XP, Windows 2000

Понравилась статья? Поделить с друзьями:
  • Объяснительная на ошибку допущенную в классном журнале
  • Объективные ошибки при принятии решения
  • Объяснительная в связи с допущенной ошибкой
  • Объективные и субъективные причины ошибок в тексте
  • Объяснительная в налоговую об ошибке в декларации