Този урок ще обясни грешката 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.