Vba object required runtime error 424 object required

In this tutorial, you will learn why Object Required (Error 424) occurs, and how to deal with it while write a VBA code.

Home / VBA / VBA Object Required Error (Error 424)

When VBA is not able to recognize the object for which you are referring to the property or a method it shows you the Object Required error. In simple words, if you refer to an object, but the name of that object is not correct (that object is not in the VBA’s object hierarchy) it shows error 424, like the following.

In the above code, as you can see, I have misspelled the active cell object, and when VBA’s executes that line of code can’t that object because there’s no object with that name (as I have misspelled it).

Note: If you have used the Option Explicit statement in the module then with the same, you’ll get a different error (see image below).

Used “Set” Keyword for a Non-Object Variable

When you use a variable to assign an object to it, you need to use the keyword “Set”. In the following example, you have a myWKS for the worksheet and iVal for the value from cell A1.

As you can see, in the above code you have variables out of which one is declared as a worksheet object and the second as a string. But at the time of assigning the value, we have used the “Set” keyword to the variable “iVal” which is not declared as an object but as a string.

How to Fix Object Required (Error 424) in VBA

  1. Go to the Debug menu in your visual basic editor.
  2. Use the step to run the entire code step by step.
  3. The moment you reach the line where you have an error VBA will show you an error.
  4. Correct that line of code.

The other way could be going through the code line by line by reading it to make sure you are referring to the right objects and using the correct name of the variables and objects.

You can also use the GOTO statement to surpass an error or show a message to the users once an error occurred.

More on VBA Errors

Subscript Out of Range (Error 9) | Type Mismatch (Error 13) | Runtime (Error 1004) | Out of Memory (Error 7) | Object Doesn’t Support this Property or Method (Error 438) | Invalid Procedure Call Or Argument (Error 5) | Overflow (Error 6) | Automation error (Error 440) | VBA Error 400

Содержание

  1. Object required (Error 424)
  2. Support and feedback
  3. VBA Object Required
  4. Object Required in Excel VBA
  5. How to Handle VBA Object Required?
  6. Example #1
  7. Example #2
  8. Example #3
  9. Example #4
  10. Things to Remember
  11. Recommended Articles
  12. Object Required Error in Excel VBA – Troubleshooting
  13. Object Required Error Overview
  14. #1. Option Explicit / Misspelled Variable Names
  15. #2 Variable Assignments
  16. #3 Worksheet-Level Modules
  17. VBA Coding Made Easy
  18. VBA Code Examples Add-in
  19. Требуется объект VBA
  20. Объект требуется в Excel VBA
  21. Почему возникает ошибка «Требуется объект»? (и… как это исправить?)
  22. Пример №1

Object required (Error 424)

References to properties and methods often require an explicit object qualifier. This error has the following causes and solutions:

You referred to an object property or method, but didn’t provide a valid object qualifier. Specify an object qualifier if you didn’t provide one. For example, although you can omit an object qualifier when referencing a form property from within the form’s own module, you must explicitly specify the qualifier when referencing the property from a standard module.

You supplied an object qualifier, but it isn’t recognized as an object. Check the spelling of the object qualifier and make sure the object is visible in the part of the program in which you are referencing it. In the case of Collection objects, check any occurrences of the Add method to be sure the syntax and spelling of all the elements are correct.

You supplied a valid object qualifier, but some other portion of the call contained an error. An incorrect path as an argument to a host application’s File Open command could cause the error. Check arguments.

You didn’t use the Set statement in assigning an object reference. If you assign the return value of a CreateObject call to a Variant variable, an error doesn’t necessarily occur if the Set statement is omitted. In the following code example, an implicit instance of Microsoft Excel is created, and its default property (the string «Microsoft Excel») is returned and assigned to the Variant RetVal . A subsequent attempt to use RetVal as an object reference causes this error:

Use the Set statement when assigning an object reference.

In rare cases, this error occurs when you have a valid object but are attempting to perform an invalid action on the object. For example, you may receive this error if you try to assign a value to a read-only property. Check the object’s documentation and make sure the action you are trying to perform is valid.

For additional information, select the item in question and press F1 (in Windows) or HELP (on the Macintosh).

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Источник

VBA Object Required

By Madhuri Thakur

VBA Object functions

Object Required in Excel VBA

Object required is an error which is caused at run time when we have defined any variable which is not an object but we try to assign some values using a SET statement. This error is a run time error that arises for various reasons. Though this error has its own causes there are also solutions for this error. Every method requires an object qualifier and these objects are assigned by using the SET statement. For example, if we have defined any variable which is not an object but we try to assign some values using a SET statement this will cause the error at run time which is object required error. There are also some instances when we do everything right have correct object qualifiers and valid object but we try to assign values to a read-only property then also we will encounter this error.

How to Handle VBA Object Required?

Out of the numerous reasons we saw for the cause of Object Required Error, there are ways in which we can handle this error.

Valuation, Hadoop, Excel, Mobile Apps, Web Development & many more.

  1. For the spell mistakes for the variables or the functions in the code, we can use Option Explicit statement to not encounter this error.
  2. We can check whether the object we are referring to it exists or not.
  3. Also, we need to ensure whether we have defined or declared our variables correctly or not.

Example #1

Let us begin with the first example where this type of error might occur and it is when we misspell a function’s name. For this, follow the below steps:

Step 1: Insert a new module inside Visual Basic Editor (VBE). Click on Insert tab > select Module.

Step 2: Now we can declare our subprocedure.

Code:

Step 3: Look at the code below what we have in the first example.

Code:

Step 4: The application function has an extra character 3 with it and we run the above code we will encounter the following error.

Example #2

Now let us discuss an example where we will use to set an object where an object is not defined instead. In other words, we will treat a non-object feature as an object. For this, follow the below steps:

Step 1: We will start with another subprocedure.

Code:

Step 2: Let us declare a variable for the path or a location to save as a string data type.

Code:

Step 3: Let us use the Set statement to set a path to this variable.

Code:

Step 4: For this example’s sake let us use Msgbox function to see what the final result will be.

Code:

Step 5: When we execute the above code we will get the following result.

We received this error because we used SET statement to a string variable and VBA treated this variable as an object with the SET statement.

Example #3

Sometimes we encounter this error when we don’t use SET statement when we assign an object reference. Let us go through this example and see how it may occur. For this, follow the below steps:

Step 1: In the same module let us start with the procedure for example 3.

Code:

Step 2: Declare any variable as a variant.

Code:

Step 3: Let us create an object using the Create Object statement.

Code:

Step 4: Now we have assigned the object reference but instead of using the SET statement.

Code:

Step 5: Once we execute the code above.

Example #4

Now there another chance when we encounter this error and that is when we try to assign values to a read-only property. Our object reference may be correct in this case but we will still encounter an error. Let us go through another example of how this might happen. For this, follow the below steps:

Step 1: In the same module let us begin.

Code:

Step 2: Below is the sample code for using a string variable with an undefined variable.

Code:

Step 3: When we execute the code above we will see the following error.

We received this error because we tried to assign values to read-only properties. Let me explain the code first we started a loop from where we are assigning object references but we are using the read-only properties.

Explanation of VBA Object Required:

From the above examples, it is very clear to us that Object Required is a run time error in VBA which we encounter while making some very small mistakes to some huge mistakes in VBA. Error handling this error can be tricky, as some mistakes are hard to identify. But there are some preventive methods such as using the option explicit statement or using the SET statement to assign objects only.

Things to Remember

There are few things which we need to remember about VBA Object Required and they are as follows:

  1. Object Required is a type of run time error in VBA.
  2. This error has an error code as 424.
  3. Spelling mistakes for variables and functions can also be a cause of Object Required Error.
  4. When some variable is not defined as an object but it is used as an object we may encounter Object Required error.

Recommended Articles

This is a guide to the VBA Object Required. Here we discuss how to handle Object Required in Excel VBA along with practical examples and downloadable excel template. You can also go through our other suggested articles –

Источник

Object Required Error in Excel VBA – Troubleshooting

In this Article

Object Required Error Overview

This tutorial will help you troubleshoot Object Required Errors in VBA.

In VBA, an Object is a “thing” like a worksheet, workbook, range, shape, row, column, userform, control, etc.

Objects have properties (exs: name, color, hidden) and methods (exs: open, clear, save, hide). If you attempt to apply a property or method, VBA needs a valid object on which to apply the properties or methods.

If you don’t provide a valid Object, you’ll receive the Object Required Error.

This guide will help you troubleshoot Object Required Errors.

#1. Option Explicit / Misspelled Variable Names

First, check if you’ve misspelled the object name. A misspelled name can cause the Object Required Error.

This can happen with existing object names:

Or with variable names:

One good way to prevent misspelled variables names is to make sure you declare Option Explicit at the top of your code module.

Option Explicit forces you to declare your variables. Now when you Debug your code, you’ll receive a message that you need to define your variable:

This should help clue you in that that variable is misspelled.

#2 Variable Assignments

Next, make sure that you assigned your variables properly.

Object Variables must be assigned by using Set Object = :

If you don’t use Set for object variable assignments you’ll receive the Object Required error.

Similarly, Non-Object Variables should be assigned without Set:

If you attempt to use Set on a non-object variable, you’ll receive the Object Required error.

#3 Worksheet-Level Modules

Is your code in a worksheet-level module? If so, you’ll need to be extra careful when referring to named ranges on other worksheets.

For example, you may have a workbook-level named range “Date”, in a regular code module, you can reference the named range like this:

However, if you reference the named range from within a worksheet-level module, you must explicitly define the worksheet where the named range is located:

Otherwise you’ll encounter an error:

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

Источник

Требуется объект VBA

Объект требуется в Excel VBA

Ошибки — неотъемлемая часть языка программирования, но настоящий гений заключается в том, чтобы найти ошибку и исправить ее. Первым шагом в исправлении этих ошибок является интеллектуальное определение причин возникновения этих ошибок. Если вы можете найти, почему возникают эти ошибки, то исправить эти ошибки будет очень легко, не прилагая особых усилий. Один такой ошибка в ВБА Ошибка в VBA Обработка ошибок VBA относится к устранению различных ошибок, возникающих при работе с VBA. читать далее кодирование «Требуется объект».

Если вы помните, при изучении переменных и присвоении им типов данных у нас также есть типы данных «Объект». Когда назначен тип данных объекта и если этот объект не существует на рабочем листе или в рабочей книге, на которую мы ссылаемся, мы получим сообщение об ошибке VBA как Требуется объект». Таким образом, как новый кодер, обычно паникуют в таких ситуациях, потому что на начальном уровне новичок не может найти причину этой ошибки.

Вы можете использовать это изображение на своем веб-сайте, в шаблонах и т. д. Пожалуйста, предоставьте нам ссылку на авторство Как предоставить атрибуцию? Ссылка на статью должна быть гиперссылкой
Например:
Источник: Требуется объект VBA (wallstreetmojo.com)

Почему возникает ошибка «Требуется объект»? (и… как это исправить?)

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

Например, посмотрите на приведенный ниже код.

Код:

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

Я объявил три переменные, и первые две переменные относятся к объектам «Рабочая книга» и «Рабочий лист». Третья переменная относится к типу данных «Дата».

Когда переменной присваиваются типы данных «Объект», нам нужно использовать клавишу слова «Set», чтобы назначить ссылку на объект переменной, поэтому в следующих двух строках, используя ключевое слово «Set», я присвоил ссылку «ThisWorkbook» переменной «Wb», потому что эта переменная содержит тип данных объекта как «Workbook», а для переменной «Ws» я назначил объект рабочего листа «Данные» листа в этой книге.

  • В следующей строке для переменной типа данных «Дата» я также использовал ключевое слово «Установить», чтобы присвоить значение значения ячейки A1 в этой книге (Wb) и на листе «Данные» (Ws).
  • В следующей строке мы показываем значение переменной «MyDate» значения ячейки A1 в окне сообщения в VBA.
  • Хорошо, давайте запустим этот код и посмотрим, что мы получим в результате.

Как вы можете видеть выше, он показывает сообщение об ошибке VBA как «Требуется объект». Хорошо, пришло время изучить, почему мы получаем это сообщение об ошибке.

  • На приведенном выше изображении сообщения об ошибке в разделе кода при отображении сообщения об ошибке часть кода с ошибкой выделена синим цветом.

  • Итак, остается вопрос, почему мы получили эту ошибку. Первое, что нам нужно увидеть, это конкретный тип данных переменной. Вернитесь к предыдущей строке кода, где мы присвоили тип данных переменной «MyDate».

  • Мы присвоили переменной тип данных «Дата» и теперь вернемся к строке ошибки.

В этой строке мы использовали ключевое слово «Set», тогда как наш тип данных не является типом данных «Object». Таким образом, в тот момент, когда код VBA видит ключевое слово «Set», он предполагает, что это объектный тип данных, и говорит, что ему требуется ссылка на объект.

Итак, суть в том, что ключевое слово «Set» используется только для ссылки на переменные объекта, такие как Worksheet, Workbook и т. д.…

Пример №1

Теперь взгляните на приведенный ниже код.

Код:

В приведенном выше коде мы использовали функцию рабочего листа «СУММ» для получения суммы значений ячеек от A1 до A100. Когда вы запустите этот код, мы столкнемся с приведенной ниже ошибкой.

Ой!! В нем говорится: «Ошибка времени выполнения« 424 »: требуется объект.

Теперь давайте внимательно посмотрим на код.

Вместо использования «Приложение» мы по ошибке использовали «Приложение1», поэтому в коде VBA возникла ошибка «Требуется объект».

Если слово « Опция явная Опция явная Параметр VBA явно обязывает пользователя объявлять все переменные перед их использованием; любая неопределенная переменная вызовет ошибку при выполнении кода. Мы можем включить его для всех кодов из опций, чтобы требовать объявления переменных. читать далее », то мы получим ошибку «Переменная не определена».

Источник

 

FeelingThis

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

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

#1

23.09.2016 23:24:49

Доброго времени суток. Столкнулся с такой проблемой, при выполнении выкидывает на выделенной строке с Run-Time Error «424»: Object Required:

Код
Sub Test() 
... 
Dim frmtRange As Range 
Set frmtRange = Range(Cells(1, BiggerColumn), Cells(LR, BiggerColumn + 1)) 
Format (frmtRange) 
End Sub 

Function Format(fRange as Range) 
... 
End Function

В чем может быть проблема? Грешу на третью строку, может неправильно задал объект frmtRange(переменные BiggerColumn и LR в порядке).

Изменено: FeelingThis23.09.2016 23:30:10

 

Sanja

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

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

А что Вы хотите от 4-й строки?

Согласие есть продукт при полном непротивлении сторон.

 

Sanja

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

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

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

Согласие есть продукт при полном непротивлении сторон.

 

FeelingThis

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

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

Чтобы в frmtRange записался диапазон данных Cells(1, BiggerColumn), Cells(LR, BiggerColumn + 1)
И затем все это дело отправилось на обработку в функцию

Изменено: FeelingThis23.09.2016 23:30:58

 

Jungl

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

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

#5

23.09.2016 23:31:23

FeelingThis,

Код
arr = Format(frmtRange)
 

vikttur

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

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

FeelingThis, кнопка форматирования кода другая — <…>

Sanja, возможно, строка съехала

 

FeelingThis

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

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

Спасибо за замечание, название функции поменял, но проблема не изчезла

 

Sanja

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

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

Вы присвойте результат работы Вашей функции чему нибудь, как пишет Jungl,
Да и саму UDF не помешало-бы посмотреть

Согласие есть продукт при полном непротивлении сторон.

 

FeelingThis

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

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

Jungl

,
спасибо большое, это помогло

 

Sanja

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

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

#10

23.09.2016 23:37:47

Цитата
vikttur написал: возможно, строка съехала

в таком случае — от 5-й

Согласие есть продукт при полном непротивлении сторон.

 

Ігор Гончаренко

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

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

#11

23.09.2016 23:40:26

Цитата
название функции поменял, но проблема не изчезла

проблемы закончатся, когда Вы перестанете программировать

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

FeelingThis

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

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

#12

23.09.2016 23:42:15

Цитата
Sanja написал: в таком случае — от 5-й

требовалось передать диапазон в функцию

 

Jungl

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

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

#13

23.09.2016 23:55:42

FeelingThis, смотря что вы хотите получить от функции, это вам виднее.
Ведь можно и обойтись передачей параметров оператору Sub через ByRef

Код
Sub Test()
Dim frmtRange As Range
Set frmtRange = Range(Cells(1, 1), Cells(2, 1))
Frmt frmtRange
End Sub
 
Sub Frmt(ByRef fRange As Range)
arr = fRange
End Sub
 

ZVI

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

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

#14

24.09.2016 02:44:56

Поясню, в чём проблема.
1. Сначала о синтаксисе. Вместо Frmt (frmtRange) должно быть либо Frmt frmtRange либо Call Frmt(frmtRange)
Обратите внимание на то, что VBA вставляет пробел в первом случае между Frmt и  (frmtRange), а в случае с Call пробела нет.
2. Теперь о преобразовании типов. Взятие в скобки переменной (см. первый случай) создает временную (runtime) переменную типа Variant, то есть меняет тип передаваемого в функцию параметра с Range на Variant, что и вызывает ошибку несоответствия типов.
Вот код для подтверждения такого преобразования типов:

Код
Sub Test1()
  Dim frmtRange As Range
  Set frmtRange = Range(Cells(1, 1), Cells(2, 1))
  Debug.Print TypeName(frmtRange), TypeName((frmtRange))
End Sub

Выдаст такое: Range         Variant()

Изменено: ZVI24.09.2016 02:47:17

Ошибка 424 буквально означает следующее: «требуется объект» или «заблокировано правилами безопасности сайта». Возникает при атаке на сайт популярных CMS, ввиду множественных параллельных запросов или обращение к объекту с ошибкой.

Множественные запросы

Данная ошибка указывает на то, что для выполнения запроса со стороны пользователя должна завершиться еще одна или несколько параллельных операций. В случае, если происходит сбой в одном из процессов, то потеряется все соединение сразу. Таким образом, дальнейшая обработка всего запроса становится невозможной. Подобное может происходить, если некорректно был завершен один из предыдущих процессов. Не путайте данную ошибку с ошибкой 403, когда вам просто запрещен доступ к информации.

Решение проблемы

Завершите параллельные запроса или остановите выполнение команд. В случае, если вы не находите, что именно нужно остановить — проверьте логи. Каждый случай индивидуален, т.к. чаще всего ошибка 424 возникает по другим причинам. Если у вас конкретно эта причина — напишите в комментариях проблему и приложите скриншот. Наш администратор разберёт вопрос в течении 24-х часов.

Правила безопасности CMS сайта

Ошибка 424 может возникнуть, если запрос содержит признаки попытки использования уязвимостей в популярных CMS. Такие запросы совершаются для получения нелегального доступа к управлению веб-страницей. Если пользователь обнаружил эту ошибку — это говорит лишь о том, что кто-то пытался сканировать сайт на наличие уязвимостей, но этого не произошло.

Решение проблемы

Нет повода для беспокойств, т.к. в этом случае просто сработал защитный механизм от сканирования уязвимостей сайта. Часто с этим сталкиваются пользователи популярных CMS. Для предотвращения взлома рекомендуем проверить логи сайта, найти ip от которого идут запросы и отправить его в блок лист.

Если ошибка 424 возникает на веб-странице, то можно выключить данную опцию. Необходимо перейти в Панель управления — Хостинг — Мои сайты — Логи и нажать на «Error» для просмотра списка (путь может отличаться в зависимости от хостинга). В новом окне нужно начать поиск записи, отображающей запрос. В появившейся строчке выбрать «Выключить правило», и в течение получаса опция отключится.

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

Требуемый объект возвращает ошибку

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

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

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

Решение ошибки

Решение проблемы состоит в том, чтобы проверить, что в вашем коде указаны все соответствующие ссылки.

«VBA» (Visual Basic для приложений) используется для создания функциональных возможностей на основе событий (с использованием языка «Visual Basic») в Excel, Word, Powerpoint и других программах. Представленный в 1993 году, VBA является основной частью пакета Microsoft Office.

Ошибки «времени выполнения» — распространенная проблема для многих настольных приложений. Ошибки времени выполнения были проблемой в течение долгого времени.

Они хранятся в трех «слоях»:

  1. Слой графического интерфейса пользователя (показывает пользователю серию входных данных)
  2. Уровень приложения (хранит «бизнес-логику» приложения)
  3. Уровень базы данных (хранящий все функции, методы, переменные и данные, необходимые для работы приложения).

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

Ваши действия:

  1. При обращении к свойству или методу объекта укажите нужный описатель объекта. Следует его указать, если он не задан.
  2. Допущена ошибка в написании объекта, поэтому не происходит его распознавания. Следует убедиться в правописании той части программы, где присутствует ссылка на объект.
  3. Правильность написания соблюдена, но стоит пересмотреть другие элементы ссылки, которые содержат ошибки. Необходимо проверить аргументы.
  4. Если пользователь собирается совершить недопустимую операцию к допустимому объекту. Пример: сбой происходит при попытке присвоить значение свойству «только чтение». Решение: проверить документацию по файлу и убедиться в том, что действие допустимо.

Ошибка  424 и Visual Basic

Одна из наиболее распространенных (и почему существуют ошибки «времени выполнения») заключается в том, что функции внутри этих команд могут ссылаться на скрипт или объект, которых не существует.

Ошибки «времени выполнения» существуют во всех типах программного обеспечения. Это приводит к сбою приложения, и Windows (или любая другая операционная система, которую вы используете) должна будет показать ошибку.

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

Решение проблемы

  • Основное решение «ошибки выполнения 424» — найти все ссылки в коде VBA. Лучший способ устранить ошибку 424 — использовать режим «отладки» VBA.
  • Самый простой способ сделать это — просмотреть каждую строку кода и удалить все возникшие проблемы. Есть простой способ сделать это, и он очень хорошо помогает исправить большинство ошибок 424 в VBA. Первое и самое эффективное решение — вручную «прочесать» код. Так можно удалить блоки кода по порядку. Второй метод — позволить VBA «пройтись» по вашему коду, удалив все элементы, которые могут вызывать проблемы.

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

Заходим в редактор VBA.  Чтобы добраться до него сделайте следующее: Файл — Параметры — Настроить ленту. Затем проверьте, что установлен флажок «Разработчик». Это создаст вкладку «Разработчик» в верхней части экрана. Автоматически запустится поиск возникшей проблемы.

Простой алгоритм решения проблемы вручную:

  1. Найдите строку кода с нарушением
  2. Определите, ссылались ли вы на объекты, которые не объявлены
  3. Найдите любую из функций, которая может вызывать ошибку, и определите, что они вызываются правильно (с правильным синтаксисом).
  4. Удалите как можно больше кода, чтобы приложение снова заработало, а затем добавьте строки одну за другой (это изолирует ошибку и позволяет исправить любую из проблем, которые могут возникнуть).

Есть дополнительные вопросы?

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

  • Remove From My Forums
  • Question

  • I do not understand why I am receiving the above run-time error. i must be violating a basic

    principle of VBA (2003)

    When I look at the workbook immediately after I receive the run-time error I see a copy of the desired worksheet placed exactly where it should be, but the code never ran far enough to rename the worksheet.

    Sub invert()

            
        Dim aworkbook As Workbook
        Dim newWorksheet As Worksheet

        
        MsgBox («Workbooks(1) =» & Workbooks(1).Name)  ‘ confirm correct workbook exists
        With Workbooks(«AWorkbook.xls»)
            Set newWorksheet = .Worksheets(«Aworksheet»).Copy( _
            After:=.Worksheets(«aworksheet»))

    ‘ ERROR OCCURS AFTER EXECUTING THE ABOVE LINE OF CODE
            newWorksheet.Name = «Inverted Aworksheet»
        End With

    ‘ code that inverts data within newWorksheet

    end sub

    please help me.

    Thank you

    Bil

Answers

  • Bill,

    not sure how to handle it exactly like you are attempting but this will do the trick in a few steps

     Dim CurWorkbook As Workbook: Set CurWorkbook = Workbooks("Book1")
     Dim newWorksheet As Worksheet
     With CurWorkbook
     .Sheets("Sheet1").Copy Before:=.Sheets(1)
     Set newWorksheet = .Sheets(1)
     newWorksheet.Name = "test"
     .Sheets("test").Move After:=.Sheets("Sheet1")
     End With

    the idea is to use something we know is consistent.  sheets(1) will always be the first sheet in the list so we can just set the newly copied sheet before the first sheet, which now makes the copied sheet the new first sheet.  then we
    can get the copied sheet (aka the first sheet) and move it after the original sheet that was copied.

    hope that makes sense.  I am sure there is a way to do it similar to how you are attempting, and i have seen something similar with worksheets.add, but did not come across any examples to set a new sheet object as a copy all in one statement. 
    not sure about that one, as i got the same error trying a few things close to yours.

    hope this helps


    • Marked as answer by

      Wednesday, May 5, 2010 7:25 AM

Lendor

0 / 0 / 0

Регистрация: 13.02.2013

Сообщений: 34

1

25.02.2013, 11:58. Показов 65400. Ответов 9

Метки нет (Все метки)


в следующем коде в строке 4 (открытие файла с расширением doc) выскакивает ошибка «run-time error ‘424’ object required»

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
 Dim wdApp As Object
 Dim wdDoc As Object
 Set wdApp = CreateObject("Word.Application")
 Set wdDoc = wdApp.Documents.Open(Replace(ThisWorkbook.FullName, ThisWorkbook.Name, act_1058652.doc))
 wdApp.Selection.WholeStory
 wdApp.Selection.Copy
 Worksheets("Обработка").PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
        False, NoHTMLFormatting:=True
 wdDoc.Close
 wdApp.Quit
Set wdDoc = Nothing
Set wdApp = Nothing

уже все перепробовал для того, чтобы она исчезла, и ставил дополнително к 2010 офису 2003, тк код пишется на 2003, а стоял у меня 2010, и биьлиотеки подключал в Tools-References, и в уровне безопасности макросов разрешил обращение к файлам из VBA, а ошибка так и вылазит (((
какие еще могут быть причины этой ошибки

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



693 / 99 / 10

Регистрация: 25.06.2011

Сообщений: 718

25.02.2013, 12:02

2

Эта проблема может возникнуть при следующих случаях:
Библиотека объектов доступа к данным не используется должным образом. — или —
Объект доступа к данным файлов отсутствуют, повреждены или неправильно зарегистрированы.

Добавлено через 42 секунды

Цитата
Сообщение от Lendor
Посмотреть сообщение

Replace(ThisWorkbook.FullName, ThisWorkbook.Name, act_1058652.doc)

попробуй просто прописать путь к файлу



0



Казанский

15131 / 6405 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

25.02.2013, 12:10

3

Лучший ответ Сообщение было отмечено как решение

Решение

Имя файла — в кавычках!

Visual Basic
1
Set wdDoc = wdApp.Documents.Open(Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "act_1058652.doc"))



4



0 / 0 / 0

Регистрация: 13.02.2013

Сообщений: 34

25.02.2013, 12:23

 [ТС]

4

действительно кавычки)) спасибо



0



Казанский

15131 / 6405 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

25.02.2013, 15:31

5

А лучше так:

Visual Basic
1
Set wdDoc = wdApp.Documents.Open(ThisWorkbook.Path & "act_1058652.doc")

, потому что часть пути может совпадать с именем книги, например c:MyBook.xlsMyBook.xls, и при замене сформируется несуществующий путь.



0



mostApi

7 / 5 / 0

Регистрация: 15.05.2015

Сообщений: 342

02.11.2015, 15:18

6

Та же ошибка!
Обзываю

Visual Basic
1
Public Cmb1, Cmb2 As ComboBox

— есть альтернатива ComboBox?
Почему альтернатива?, или то что можно применить в случае?
Из диапазона ячеек поиском формируется список для ComboBox, потом из него по .ListIndex мне удобно задавать нужные координаты используемых ячеек?!
Ошибка здесь:

Visual Basic
1
2
3
4
5
6
7
8
With Cmb1
    '.Clear
    '.Style = fmStyleDropDownList
        For iRow = 14 To Cells(Rows.Count, 2).End(xlUp).Row Step 4
            .AddItem Cells(iRow, 2)
        Next
    .ListIndex = -1
End With

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

Visual Basic
1
Dictionary

— может словарь? Как с ним в моем случае быть?



0



Казанский

15131 / 6405 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

02.11.2015, 15:45

7

mostApi, а где Вы связываете Cmb1 с каким-либо существующим комбобоксом? Например

Visual Basic
1
Set Cmb1 = UserForm1.ComboBox1



1



7 / 5 / 0

Регистрация: 15.05.2015

Сообщений: 342

02.11.2015, 16:22

8

Казанский, Ооо, не подумал, спасибо…

Вопрос: собрал словарь, структура такова: Key = «Vasia»; Item = «Вася»… и т.д.
Как найти «Вася» и подставить с него «Vasia»…?



0



Казанский

15131 / 6405 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

02.11.2015, 23:05

9

Цитата
Сообщение от mostApi
Посмотреть сообщение

Как найти «Вася» и подставить с него «Vasia»…?

В смысле, сделать значение равным ключу? Найти — перебором

Visual Basic
1
2
3
4
5
6
  For Each x In di.Keys 'di - словарь
    If di(x) = "Вася" Then
      di(x) = x
      Exit For
    End If
  Next

А почему приходится искать значение? Может, поменять местами значение и ключ?



0



7 / 5 / 0

Регистрация: 15.05.2015

Сообщений: 342

03.11.2015, 11:23

10

Казанский, спасибо…

Просто у меня в таблице Excel имена пользователей на Русском языке, а в базе, таблица имени пользователя на English, поэтому нужна была простая подстановка…



0



Понравилась статья? Поделить с друзьями:
  • Vba match is error
  • Vba left compile error
  • Vba excel обработка ошибок on error
  • Vba excel как отключить compile error
  • Vba excel как изменить цвет текста