Помилка VBA 1004-Помилка, визначена додатком або об’єктом

У цьому посібнику буде пояснено помилку VBA 1004-помилка, що визначається додатком або об’єктом.

Помилка 1004 часу виконання VBA відома як помилка, визначена додатком або об'єктом, яка виникає під час виконання коду. Виконання помилок кодування (Див. Наш Посібник з обробки помилок) є невід'ємною частиною навчання VBA, але знання, чому виникає помилка, допомагає уникнути помилок у майбутньому кодуванні.

Помилка VBA 1004 - Об’єкт не існує

Якщо ми маємо на увазі такий об’єкт у нашому коді, як ім’я діапазону, яке не було визначено, то ця помилка може статися, оскільки код VBA не зможе знайти ім’я.

12345678 Sub CopyRange ()Затемнити копію з діапазонуЗатемнити CopyTo як діапазонВстановити CopyFrom = Sheets (1) .Range ("CopyFrom")Встановити CopyTo = Sheets (1) .Range ("CopyTo")CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesEnd Sub

У наведеному вище прикладі буде скопійовано значення з іменованого діапазону "CopyFrom" до іменованого діапазону "CopyTo" - за умови, звичайно, що це існуючі іменовані діапазони! Якщо їх немає, відобразиться помилка 1004.

Найпростіший спосіб уникнути цієї помилки у наведеному вище прикладі - створити назви діапазонів у книзі Excel або звернутися до діапазону у традиційному форматі рядка та стовпця, наприклад: Діапазон ("A1: A10").

Помилка VBA 1004 - назва вже зайнята

Помилка також може виникнути, якщо ви намагаєтесь перейменувати об’єкт на об’єкт, який уже існує - наприклад, якщо ми намагаємось перейменувати Sheet1, але ім’я, яке ви надаєте аркушу, - це вже ім’я іншого аркуша.

123 Робочий лист ()ActiveSheet.Name = "Аркуш 2"End Sub

Якщо у нас вже є Sheet2, то помилка станеться.

Помилка VBA 1004 - неправильне посилання на об’єкт

Помилка також може виникнути, коли ви неправильно посилаєтесь на об’єкт у своєму коді. Наприклад:

12345678 Sub CopyRange ()Затемнити копію з діапазонуЗатемнити CopyTo As RangeВстановити CopyFrom = Діапазон ("A1: A10")Встановити CopyTo = Діапазон ("C1: C10")Діапазон (CopyFrom)Діапазон (CopyTo) .PasteSpecial xlPasteValuesEnd Sub

Це знову дасть нам помилку 10004

Виправте код, і помилка більше не відображатиметься.

12345678 Sub CopyRange ()Затемнити копію з діапазонуЗатемнити CopyTo як діапазонВстановити CopyFrom = Діапазон ("A1: A10")Встановити CopyTo = Діапазон ("C1: C10")CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesEnd Sub

Помилка VBA 1004 - об’єкт не знайдено

Ця помилка також може виникнути, коли ми намагаємось відкрити книгу, а книгу не знайдено - книга в цьому випадку є об’єктом, який не знайдено.

1234 Sub OpenFile ()Dim wb Як робочий зошитВстановити wb = Workbooks.Open ("C: \ Data \ TestFile.xlsx")End Sub

Хоча повідомлення у вікні помилки буде іншим, помилка все ще становить 1004.

wave wave wave wave wave