VBA Error 1004-Дефинирана от приложение или обектно дефинирана грешка

Този урок ще обясни грешката VBA 1004-дефинирана от приложението или обектно дефинирана грешка.

Грешка 1004 по време на изпълнение на VBA е известна като дефинирана от приложение или обектно дефинирана грешка, която възниква, докато кодът работи. Правенето на грешки при кодирането (Вижте нашето Ръководство за обработка на грешки) е неразделна част от изучаването на VBA, но знанието защо възниква грешка ви помага да избегнете грешки при бъдещо кодиране.

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

Ако визираме обект в нашия код, като име на диапазон, който не е дефиниран, тогава тази грешка може да възникне, тъй като кодът на VBA няма да може да намери името.

12345678 Sub CopyRange ()Затъмнете копието От обхватDim CopyTo As RangeЗадайте 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 ()Затъмнете копието От обхватаDim CopyTo As RangeЗадайте CopyFrom = Range ("A1: A10")Задайте CopyTo = Range ("C1: C10")Диапазон (CopyFrom). КопиранеДиапазон (CopyTo) .PasteSpecial xlPasteValuesEnd Sub

Това отново ще ни даде грешка 10004

Коригирайте кода и грешката вече няма да се показва.

12345678 Sub CopyRange ()Затъмнете копието От обхватаDim CopyTo As RangeЗадайте CopyFrom = Range ("A1: A10")Задайте CopyTo = Range ("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