Ошибка VBA 1004 - ошибка, определяемая приложением или объектом

В этом руководстве объясняется ошибка VBA 1004 - ошибка, определяемая приложением или объекта.

Ошибка времени выполнения VBA 1004 известна как ошибка приложения или объекта, которая возникает во время выполнения кода. Ошибки кодирования (см. Наше руководство по обработке ошибок) являются неотъемлемой частью изучения VBA, но знание причин возникновения ошибок помогает избежать ошибок при кодировании в будущем.

Ошибка VBA 1004 - объект не существует

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

12345678 Sub CopyRange ()Тусклое копирование из диапазонаDim CopyTo As RangeУстановите CopyFrom = Sheets (1) .Range ("CopyFrom")Установите CopyTo = Sheets (1) .Range ("CopyTo")CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesКонец подписки

В приведенном выше примере будут скопированы значения из именованного диапазона «CopyFrom» в именованный диапазон «CopyTo» - конечно, при условии, что это существующие именованные диапазоны! Если они не существуют, отобразится ошибка 1004.

Самый простой способ избежать этой ошибки в приведенном выше примере - создать имена диапазонов в книге Excel или обратиться к диапазону в традиционном формате строк и столбцов, например: Диапазон («A1: A10»).

Ошибка VBA 1004 - имя уже занято

Ошибка также может возникнуть, если вы пытаетесь переименовать объект в уже существующий объект - например, если мы пытаемся переименовать Sheet1, но имя, которое вы даете листу, уже является именем другого листа.

123 Sub NameWorksheet ()ActiveSheet.Name = "Sheet2"Конец подписки

Если у нас уже есть Sheet2, то произойдет ошибка.

Ошибка VBA 1004 - неправильная ссылка на объект

Ошибка также может возникнуть, если вы неправильно указали объект в своем коде. Например:

12345678 Sub CopyRange ()Тусклое копирование из диапазонаDim CopyTo As RangeУстановить CopyFrom = Range ("A1: A10")Установить CopyTo = Range ("C1: C10")Диапазон (CopyFrom) .CopyДиапазон (CopyTo) .PasteSpecial xlPasteValuesКонец подписки

Это снова даст нам ошибку 10004

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

12345678 Sub CopyRange ()Тусклое копирование из диапазонаDim CopyTo As RangeУстановить CopyFrom = Range ("A1: A10")Установить CopyTo = Range ("C1: C10")CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesКонец подписки

Ошибка VBA 1004 - объект не найден

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

1234 Подложка OpenFile ()Dim wb As WorkbookУстановите wb = Workbooks.Open ("C: \ Data \ TestFile.xlsx")Конец подписки

Хотя сообщение в окне ошибки будет другим, ошибка все равно 1004.

wave wave wave wave wave