Не задана переменная объекта или переменная блока With
Ссылка на недопустимую переменную объекта. Эта ошибка может возникать по нескольким причинам:
Переменная была объявлена без указания типа. Если переменная объявлена без указания типа, по умолчанию используется тип
Object
.Например, переменная, объявленная с
Dim x
типомObject;
переменной, объявленной сDim x As String
типом, будет иметь типString
.Совет
Оператор
Option Strict
запрещает неявное ввод, которое приводит к типуObject
. Если тип не указан, возникнет ошибка во время компиляции. См. раздел Оператор Option Strict.Вы пытаетесь ссылаться на объект, которому присвоено значение
Nothing
.Вы пытаетесь получить доступ к элементу переменной массива, которая не была правильно объявлена.
Например, массив, объявленный как
products() As String
активирует ошибку при попытке ссылаться на элемент массиваproducts(3) = "Widget"
. Массив не имеет элементов и обрабатывается как объект.Вы пытаетесь получить доступ к коду в блоке
With...End With
до инициализации блока.With...End With
Блок должен быть инициализирован путем выполнения точки входа инструкцииWith
.
Примечание.
В более ранних версиях Visual Basic или VBA эта ошибка также была активирована путем назначения значения переменной без использования Set
ключевое слово (x = "name"
вместо ).Set x = "name"
Ключевое слово Set
больше не является допустимым в Visual Basic .Net.
Исправление ошибки
Задайте значение
Option Strict
On
, добавив следующий код в начало файла:Option Strict On
При запуске проекта в списке ошибок компилятора появится любая переменная, указанная без типа.
Если вы не хотите включить
Option Strict
, выполните поиск кода для любых переменных, которые были указаны без типа (Dim x
вместоDim x As String
) и добавьте нужный тип в объявление.Убедитесь, что вы не ссылаетесь на переменную объекта, которая была задана
Nothing
. Выполните поиск кода для ключевое словоNothing
и проверьте код, чтобы объект не был заданNothing
до тех пор, пока вы не на него ссылаетесь.Прежде чем получить доступ к ним, убедитесь, что все переменные массива измерены. Можно назначить измерение при первом создании массива (
Dim x(5) As String
вместоDim x() As String
этого) или использоватьReDim
ключевое слово, чтобы задать размеры массива перед первым доступом к нему.Убедитесь, что
With
блок инициализирован, выполнив точку входа инструкцииWith
.
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по