Главная » Error » VBA Error 1004

VBA Error 1004

VBA Error 1004 – Object does not exist

If we are referring to an object in our code such as a Range Name that has not been defined, then this error can occur as the VBA code will be unable to find the name.

Sub CopyRange()
  Dim CopyFrom As Range
  Dim CopyTo As Range
  Set CopyFrom = Sheets(1).Range(“CopyFrom”)
  Set CopyTo = Sheets(1).Range(“CopyTo”)
  CopyFrom.Copy
CopyTo.PasteSpecial xlPasteValues
End Sub

The example above will copy the values from the named range “CopyFrom” to the named range “CopyTo” – on condition of course that these are existing named ranges!  If they do not exist, then the Error 1004 will display.

VBA Error1004 1

The simplest way to avoid this error in the example above is to create the range names in the Excel workbook, or refer to the range in the traditional row and column format eg: Range(“A1:A10”).

VBA Error 1004 – Name Already Taken

The error can also occur if you are trying to rename an object to an object that already exists – for example if we are trying to rename Sheet1 but the name you are giving the sheet is already the name of another sheet.

Sub NameWorksheet()
ActiveSheet.Name = “Sheet2”
End Sub

If we already have a Sheet2, then the error will occur.

VBA Error1004 2

Способ №1. CCleaner

Самое простое решение заключается в том, чтобы воспользоваться программой для чистки реестра. Как это работает?

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

Лучшей по праву считается CCleaner, хотя вы можете воспользоваться и другой.

Чтобы использовать ее, сделайте вот что:

  1. Скачайте (вот ссылка на бесплатную) и установите программу.
  2. Запустите. Перейдите на вкладку «Реестр» на панели слева.
  3. В разделе «Целостность» поставьте галочки на всех возможных пунктах – никто не знает, в чем именно проблема.
  4. Нажмите кнопку «Поиск проблем». Когда этот процесс закончится, нажмите кнопку «Исправить…».

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

  1. Подождите, пока приложение исправит все проблемы. Перезагрузите компьютер.

После этого runtime error должен перестать появляться. Если нет, переходим к следующему решению.

Способ №2. DirectX

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

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

Для этого зайдите на сайт Microsoft, на страницу с возможностью скачать DirectX. Запустите скачанный файл и выполните все действия, подразумевающие установку исполняемых библиотек.

Здесь нет никаких особых рекомендаций – обычная.

Страница загрузки DirectX

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

VBA Error 1004 – Incorrectly Referencing an Object

The error can also occur when you have incorrectly referenced an object in your code. For example:

Sub CopyRange()
Dim CopyFrom As Range
Dim CopyTo As Range
Set CopyFrom = Range(“A1:A10”)
Set CopyTo = Range(“C1:C10”)
Range(CopyFrom).Copy
Range(CopyTo).PasteSpecial xlPasteValues
End Sub

This will once again give us the Error 10004

VBA Error1004 1

Correct the code, and the error will no longer be shown.

Sub CopyRange()
  Dim CopyFrom As Range
  Dim CopyTo As Range
  Set CopyFrom = Range(“A1:A10”)
  Set CopyTo = Range(“C1:C10”)
  CopyFrom.Copy
  CopyTo.PasteSpecial xlPasteValues
End Sub

VBA Error 1004 – Object Not Found

This error can also occur when we are trying to open a workbook and the workbook is not found – the workbook in this instance being the object that is not found.

Sub OpenFile()
Dim wb As Workbook
Set wb = Workbooks.Open(“C:DataTestFile.xlsx”)
End Sub

Although the message will be different in the error box, the error is still 1004.

VBA Error 1004 FileNotFound

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

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

For index = 1 to 500
Debug.Print Error$(index)
Next index

Такой код по-прежнему перечисляет все сообщения об ошибках Visual Basic для приложений, но отображает сообщение “Application-defined or object-defined error” (“Ошибка, определенная приложением или объектом”) для ошибок, определенных ведущими приложениями (например для тех, которые в Visual Basic относятся к формам и элементам управления). Многие из этих ошибок являются перехватываемыми ошибками выполнения. Используйте диалоговое окно Поиск в разделе справки, чтобы найти список перехватываемых ошибок вашего ведущего приложения. Щелкните Search (Поиск), введите trappable (перехватываемые) в первом поле ввода и нажмите Show Topics (Показать темы). Выберите Trappable Errors (Перехватываемые ошибки) в нижнем окне списка и нажмите Go To (Перейти).

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

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

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

Тема

  • Светлая
  • Темная
  • Высокая контрастность
  • Предыдущие версии
  • Блог
  • Участие в доработке
  • Конфиденциальность и файлы cookie
  • Условия использования
  • Товарные знаки
  • © Microsoft 2022

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 save as

Learn More!

VBA Code Generator

Learn More

vba-free-addin

Способ №3. Visual C++

О распространяемом пакете Visual C++ в контексте рассматриваемой проблемы можно скачать то же самое, что и о библиотеках DirectX.

Возможно, какие-то файлы были повреждены или версия устарела.

Бывают в данном случае и другие ситуации, когда установленная C++ попросту не подходит для вашей операционной системы.

Ниже приведена таблица с вариантами, которые подходят для разных версий ОС.

Таблица 1. Требуемые версии Visual C++ для Windows

Операционная системаТребуемая Visual C++
Windows XP и ниже C++2008
Windows 7 C++2010
Windows 8 и 10 Наиболее актуальная на данный момент

Так вот, в зависимости от того, какая у вас ОС, вам следует скачать и инсталировать на свой компьютер C++2008 (64-бит, 32-бит), C++2010 (64-бит, 32-бит) или же C++2015 обновление 3.

Это наиболее актуальная версия по состоянию на июнь 2017 года. В будущем выйдут новые, поэтому следите за новостями на официальном сайте Microsoft.

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

После этого перезагрузите компьютер.

Страница загрузки Visual C++

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.

(No installation required!)

Free Download

Return to VBA Code Examples

Excel Automation Tool

AutoMacro: VBA Add-in with Hundreds of Ready-To-Use VBA Code Examples & much more!

Learn More

Источники

  • https://www.automateexcel.com/vba/error-1004-application-defined-object-defined/
  • https://pomogaemkompu.temaretik.com/1702206922594454476/samye-legkie-sposoby-ispravit-oshibku-runtime-error/
  • https://learn.microsoft.com/ru-ru/office/vba/language/reference/user-interface-help/application-defined-or-object-defined-error
[свернуть]
Решите Вашу проблему!


×
Adblock
detector