Ошибка 424 VBA Excel
Обновлено: 23.11.2024
Когда VBA не может распознать объект, для которого вы ссылаетесь на свойство или метод, он показывает вам ошибку Object Required. Простыми словами, вы ссылаетесь на объект, но имя этого объекта неверно (этот объект не находится в иерархии объектов VBA), появляется ошибка 424, как показано ниже.
В приведенном выше коде, как вы можете видеть, я неправильно написал объект активной ячейки, и когда VBA выполняет эту строку кода, этот объект не может быть создан, потому что нет объекта с таким именем (поскольку я написал его с ошибкой).< /p>
Примечание. Если вы использовали оператор Option Explicit в модуле, то с тем же самым вы получите другую ошибку (см. изображение ниже).
Использовано ключевое слово «Set» для необъектной переменной
Когда вы используете переменную для присвоения ей объекта, вам нужно использовать ключевое слово «Set». В следующем примере у вас есть myWKS для рабочего листа и iVal для значения из ячейки A1.
Как видите, в приведенном выше коде есть переменные, одна из которых объявлена как объект рабочего листа, а вторая — как строка. Но во время присвоения значения мы использовали ключевое слово «Set» для переменной «iVal», которая объявлена не как объект, а как строка.
Как исправить Object Required (ошибка 424) в VBA
- Перейдите в меню "Отладка" в базовом визуальном редакторе.
- Используйте шаг в, чтобы выполнить весь код шаг за шагом.
- В тот момент, когда вы дойдете до строки с ошибкой, VBA покажет вам ошибку.
- Исправьте эту строку кода.
Другим способом может быть просмотр кода строка за строкой, чтение его, чтобы убедиться, что вы ссылаетесь на правильные объекты и используете правильные имена переменных и объектов.
Вы также можете использовать оператор GOTO, чтобы обойти ошибку или показать сообщение пользователям после возникновения ошибки.
Ошибки — неотъемлемая часть языка программирования, но настоящая гениальность заключается в том, чтобы найти ошибку и исправить ее. Первым шагом в исправлении этих ошибок является интеллектуальное определение причин возникновения этих ошибок. Если вы можете найти, почему возникают эти ошибки, то исправить эти ошибки будет очень легко, не прилагая особых усилий. Одна из таких ошибок в VBA. Ошибка в VBA. Обработка ошибок VBA относится к устранению различных ошибок, возникающих при работе с VBA. Читать далее кодировка «Требуется объект».
Если вы помните, при изучении переменных и присвоении им типов данных у нас также есть типы данных «Объект». Когда тип данных объекта назначен, и если этот объект не существует на рабочем листе или в рабочей книге, на которую мы ссылаемся, мы получим сообщение об ошибке VBA как «Требуется объект». Итак, начинающий кодер обычно паникует в таких ситуациях, потому что на начальном уровне новичок не может найти причину этой ошибки.
Почему возникает ошибка «Требуется объект»? (и… как это исправить?)
Хорошо, нужно два-три примера, чтобы понять, почему возникает эта ошибка и как ее исправить.
Например, взгляните на приведенный ниже код.
Код:
Позвольте мне объяснить вам приведенный выше код.
Я объявил три переменные, и первые две переменные относятся к объектам «Рабочая книга» и «Рабочий лист». Третья переменная относится к типу данных «Дата».
Когда переменной присваиваются типы данных «Объект», нам нужно использовать клавишу слова «Set», чтобы назначить ссылку на объект переменной, поэтому в следующих двух строках с помощью «Set» ключевое слово, я присвоил ссылку «ThisWorkbook» переменной «Wb», потому что эта переменная содержит тип данных объекта как «Workbook», а для переменной «Ws» я назначил объект листа рабочего листа «Данные» в этой книге. .
- В следующей строке для переменной типа данных «Дата» я также использовал ключевое слово «Установить», чтобы присвоить значение значения ячейки A1 в этой книге (Wb) и на листе «Данные» (Ws).
- В следующей строке мы показываем значение переменной «MyDate» значения ячейки A1 в окне сообщения в VBA.
- Хорошо, давайте запустим этот код и посмотрим, что получится в результате.
Как вы можете видеть выше, он показывает сообщение об ошибке VBA как "Требуется объект". Хорошо, пришло время изучить, почему мы получаем это сообщение об ошибке.
В этой строке мы использовали ключевое слово «Set», тогда как наш тип данных не является типом данных «Object». Таким образом, в тот момент, когда код VBA видит ключевое слово «Set», он предполагает, что это объектный тип данных, и говорит, что ему требуется ссылка на объект.
Итак, суть в том, что ключевое слово «Set» используется только для ссылки на переменные объекта, такие как Worksheet, Workbook и т. д.…
Теперь взгляните на приведенный ниже код.
Код:
В приведенном выше коде мы использовали функцию рабочего листа «СУММ» для получения суммы значений ячеек от A1 до A100. Когда вы запустите этот код, мы столкнемся с приведенной ниже ошибкой.
Ой!! Пишет: "Ошибка выполнения "424": требуется объект".
Теперь давайте внимательно посмотрим на код.
Вместо использования «Приложение» мы по ошибке использовали «Приложение1», поэтому в коде VBA возникла ошибка «Требуется объект».
Что нужно помнить
- Обязательный объект означает, что ссылка на тип данных объекта должна быть точной.
- Если в кодировке не включен параметр «явное слово», мы получим ошибку «Требуется объект» для переменных слов с ошибками, а если параметр «явный» включен, мы получим ошибку «переменная не определена» для переменных слов с ошибками.
Рекомендуемые статьи
Это руководство по требуемым объектам VBA. Здесь мы узнаем, почему объекту требуется ошибка в Excel VBA и несколько примеров, и загружаем шаблон Excel. Ниже приведены некоторые полезные статьи Excel, связанные с VBA –
Что такое яблоко? Этот потенциально философский вопрос используется в этой статье, чтобы показать, что вызывает сообщение об ошибке во время выполнения «Требуется объект (ошибка 424)».
Рассмотрите плод, который Джонни Эпплсид посадил для поселенцев. Красный, зеленый или желтый шар — это объект. Англоязычные называют этот объект яблоком. Apple — это не сам объект, а ссылка на объект. Apple — это квалификатор объекта, если использовать термин VBA.
Apple также не является названием объекта. У разных яблок разные названия, такие как Cortland, Granny Smith и Yellow Delicious. Имя — это одно из свойств объекта Apple.
VBA — это объектно-ориентированный язык программирования, или ООП (ужасно близко к ООП, не так ли?). VBA организован вокруг объектов. К объектам Microsoft Excel относятся рабочая книга, рабочий лист, диапазон, ячейка, выделение и приложение.
У объекта VBA есть свойства и методы. Свойство или метод объекта следует сразу за последней точкой. Если вы используете неправильное свойство или метод для объекта, вы получите ошибку времени выполнения.
В следующих операторах используется правильный синтаксис VBA для Apple в качестве фиктивного квалификатора объекта VBA.
Точка отделяет квалификатор объекта от его свойства или метода. Пилинг – это метод. Цвет и имя являются свойствами.
Совет. Знак равенства (=) — это надежный способ отличить свойство от метода. Только свойства используют знак равенства для присвоения значения свойству.
Ниже приведены два допустимых оператора VBA. Можете ли вы определить квалификаторы объекта, свойство и метод?
Диаграммы и рабочий лист являются квалификаторами объекта. Добавить — это метод. Имя является свойством. Резюме, между прочим, является ценностью.
Благодаря популярному фрукту оставшаяся часть этой статьи посвящена причинам появления сообщения об ошибке «Требуется объект (ошибка 424)» и способам их устранения. «Требуется объект» означает, что требуемый квалификатор объекта отсутствует или квалификатор объекта, свойство или метод недействительны. Звучит просто, не так ли? На практике это не всегда просто, но помогает то, что «Требуется объект» — это ошибка времени выполнения, поэтому оператор с ошибкой обычно выделяется желтым цветом в режиме прерывания. Начнем с простого исправления.
Переменная не определена
Эта инструкция вызывает сообщение об ошибке «Требуется объект». Вы можете найти проблему?
Это простая опечатка. В квалификаторе объекта Application указана ошибка. Теперь, когда объявление Option Explicit добавляется в верхнюю часть окна кода, сообщение об ошибке меняется на «Переменная не определена» и выделяется только приложение.
Рекомендация: запускайте каждое окно кода с параметром Explicit, чтобы устранить одну из причин сообщения об ошибке «Требуется объект».
Установить объекты
Говоря о переменных, переменная объявляется с помощью оператора Dim. Новый экземпляр объекта также создается с помощью оператора Dim. Сравните два оператора Dim ниже:
Затемнить strName как строку
Затемнить myCeOutput как диапазон
Первый оператор Dim объявляет переменную strName с типом данных String. Второй оператор Dim создает новый экземпляр объекта Range с квалификатором объекта rngCell. Приведенная ниже процедура замены пробелов нулями в выбранной области вызывает сообщение об ошибке «Требуется объект»:
VBA не распознает rngCell в качестве квалификатора объекта, поскольку он не был установлен на объект. После создания квалификатора объекта с помощью Dim квалификатор объекта должен быть назначен объекту Excel с помощью ключевого слова Set. Эта пересмотренная процедура выполняется без ошибок, если пользователь выбирает регион перед запуском макроса:
Не задавать переменные
Не использовать Set с переменными так же важно, как использовать Set с объектами. Если вы используете Set с переменными, VBA генерирует сообщение об ошибке. Изучите пример ниже:
Полностью квалифицированные объекты
Сообщение об ошибке «Требуется объект» может сильно разочаровать, если утверждение кажется правильным, как это:
LastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
Сообщение об ошибке появляется, когда рабочий лист, на который ссылается ws, не является активным листом. VBA выполняет оператор следующим образом:
LastRow = ws.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
VBA не может использовать количество строк активного листа в качестве количества строк ws. Вы можете предотвратить этот тип ошибки, полностью уточнив квалификатор объекта Rows с помощью квалификатора объекта рабочего листа, как показано ниже:
Без соответствующего квалификатора объекта VBA использует активную книгу, активный лист и активную ячейку. Полностью квалифицированный оператор удаляет эти предположения; например:
StartRow = Application.Workbooks(1).Worksheets(1).Cells(n, 1).Row
Рекомендации. Действительно, использование квалификатора объекта книги является излишним, если его процедуры работают только внутри книги. Тем не менее, предотвратите ошибки во время выполнения и непредвиденные результаты, явно ссылаясь на лист и книгу, когда процедуры ссылаются на более чем один лист или одну книгу.
Действительный объект, недопустимое свойство или метод
Даже если ошибка связана со свойством или методом действительного квалификатора объекта, сообщение об ошибке по-прежнему будет "Требуется объект". Функции рабочего листа являются распространенными виновниками. Частично это связано с тем, что в VBA нет автозаполнения для функций рабочего листа, как для свойств и методов. Изучите эти примеры:
ActiveCell = Application.VLookup(ActiveCell.Offset(0, -1), Range("TeamNameLookup"), 2, False).Value
ActiveCell.Value = Application.VLookup(ActiveCell.Offset(0, -1), Range("TeamNameLookup"), 2, False)
Причина: функция VLookup не является объектом. В нем отсутствует свойство Value.
Range("K7:K14") = Application.WorksheetFunction.VLookup(ActiveSheet.Name, Lookup.Range("A$1$:B$200$"), 2, 0)
Range("K7:K14") = Application.WorksheetFunction.VLookup(ActiveSheet.Name, Lookup.Range("$A$1:$B$200"), 2, 0)
Причина: Знак доллара ($) находится не на том месте.
Наконец, сообщение об ошибке «Требуется объект» появляется в редких случаях, когда оператор с квалификатором объекта имеет правильный синтаксис, но действие не может быть выполнено. Согласно Microsoft, эта ошибка может возникнуть, например, при попытке присвоить значение свойству, доступному только для чтения.
"Яблоко в день избавит вас от доктора", — гласит поговорка. Мы надеемся, что эта статья избавит вас от сообщения об ошибке «Требуется объект».
Требуется объект — это ошибка, возникающая во время выполнения, когда мы определили какую-либо переменную, которая не является объектом, но пытаемся присвоить некоторые значения с помощью оператора SET. Эта ошибка является ошибкой времени выполнения, которая возникает по разным причинам. Хотя у этой ошибки есть свои причины, есть и решения для этой ошибки. Для каждого метода требуется квалификатор объекта, и эти объекты назначаются с помощью оператора SET. Например, если мы определили какую-либо переменную, которая не является объектом, но попытаемся присвоить некоторые значения с помощью оператора SET, это вызовет ошибку во время выполнения, которая является ошибкой, требующей объекта. Есть также некоторые случаи, когда мы делаем все правильно, имеем правильные квалификаторы объекта и допустимый объект, но мы пытаемся присвоить значения свойству только для чтения, тогда мы также столкнемся с этой ошибкой.
Как обрабатывать требуемый объект VBA?
Из многочисленных причин, которые мы видели для причины Object Required Error, есть способы, которыми мы можем справиться с этой ошибкой.
Оценка, Hadoop, Excel, мобильные приложения, веб-разработка и многое другое.
- Для ошибок написания переменных или функций в коде мы можем использовать оператор Option Explicit, чтобы не столкнуться с этой ошибкой.
- Мы можем проверить, существует ли объект, на который мы ссылаемся, или нет.
- Кроме того, нам необходимо убедиться, что мы правильно определили или объявили наши переменные.
Давайте начнем с первого примера, где может возникнуть ошибка такого типа, когда мы ошибаемся в имени функции. Для этого выполните следующие действия:
Шаг 1. Вставьте новый модуль в редактор Visual Basic (VBE). Перейдите на вкладку «Вставка» > выберите «Модуль».
Шаг 2. Теперь мы можем объявить нашу подпроцедуру.
Код:
Шаг 3. Посмотрите на код ниже, что у нас есть в первом примере.
Код:
Шаг 4. В функции приложения есть дополнительный символ 3, и мы запустим приведенный выше код, и мы столкнемся со следующей ошибкой.
Все в одном пакете Excel VBA (более 120 курсов) Более 120 онлайн-курсов | 500+ часов | Поддающиеся проверке сертификаты | Пожизненный доступ
4,9 (2356 оценок)
Теперь давайте обсудим пример, в котором мы будем использовать для установки объекта, где вместо этого объект не определен. Другими словами, мы будем рассматривать необъектный признак как объект. Для этого выполните следующие действия:
Шаг 1. Начнем с другой подпроцедуры.
Код:
Шаг 2. Давайте объявим переменную для пути или местоположения для сохранения в виде строкового типа данных.
Код:
Шаг 3. Воспользуемся оператором Set, чтобы задать путь к этой переменной.
Код:
Шаг 4: Для этого примера давайте воспользуемся функцией Msgbox, чтобы увидеть, каким будет окончательный результат.
Код:
Шаг 5. Когда мы выполним приведенный выше код, мы получим следующий результат.
Мы получили эту ошибку, потому что использовали оператор SET для строковой переменной, а VBA обработал эту переменную как объект с оператором SET.
Иногда мы сталкиваемся с этой ошибкой, когда не используем оператор SET при назначении ссылки на объект. Давайте рассмотрим этот пример и посмотрим, как это может произойти. Для этого выполните следующие действия:
Шаг 1: В том же модуле начнем с процедуры, например 3.
Код:
Шаг 2. Объявите любую переменную как вариант.
Код:
Шаг 3. Давайте создадим объект с помощью оператора Create Object.
Код:
Шаг 4. Теперь мы присвоили ссылку на объект, но вместо использования оператора SET.
Код:
Шаг 5. После того, как мы выполним приведенный выше код.
Теперь есть еще один шанс, когда мы сталкиваемся с этой ошибкой, и это когда мы пытаемся присвоить значения свойству, доступному только для чтения. Наша ссылка на объект может быть правильной в этом случае, но мы все равно столкнемся с ошибкой. Давайте рассмотрим еще один пример того, как это может произойти. Для этого выполните следующие действия:
Шаг 1. Начнем с того же модуля.
Код:
Шаг 2. Ниже приведен пример кода для использования строковой переменной с неопределенной переменной.
Код:
Шаг 3. Когда мы выполним приведенный выше код, мы увидим следующую ошибку.
Мы получили эту ошибку, потому что попытались присвоить значения свойствам, доступным только для чтения. Позвольте мне сначала объяснить код: мы запустили цикл, в котором мы назначаем ссылки на объекты, но мы используем свойства только для чтения.
Требуется объяснение объекта VBA:
Из приведенных выше примеров нам совершенно ясно, что Object Required — это ошибка времени выполнения в VBA, с которой мы сталкиваемся, совершая как очень маленькие, так и огромные ошибки в VBA. Обработка этой ошибки может быть сложной, так как некоторые ошибки трудно идентифицировать. Но есть некоторые превентивные методы, такие как использование явного оператора option или использование оператора SET только для назначения объектов.
Что нужно помнить
Есть несколько вещей, которые нам нужно помнить о VBA Object Required, и они заключаются в следующем:
- Обязательный объект — это тип ошибки времени выполнения в VBA.
- Эта ошибка имеет код ошибки 424.
- Ошибки правописания переменных и функций также могут быть причиной ошибки Object Required Error.
- Когда какая-то переменная не определена как объект, но используется как объект, мы можем столкнуться с ошибкой Object Required.
Рекомендуемые статьи
Это руководство по необходимому объекту VBA. Здесь мы обсуждаем, как обрабатывать Object Required в Excel VBA вместе с практическими примерами и загружаемым шаблоном Excel. Вы также можете ознакомиться с другими нашими рекомендуемыми статьями –
Читайте также: