У цьому посібнику буде пояснено помилку 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.