Denne vejledning forklarer VBA-fejl 1004- applikationsdefineret eller objektdefineret fejl.
VBA-driftstidsfejl 1004 er kendt som en applikationsdefineret eller objektdefineret fejl, der opstår, mens koden kører. At lave kodningsfejl (se vores fejlhåndteringsvejledning) er en vigtig del af at lære VBA, men at vide, hvorfor der opstår en fejl, hjælper dig med at undgå fejl i fremtidig kodning.
VBA -fejl 1004 - Objektet findes ikke
Hvis vi refererer til et objekt i vores kode, f.eks. Et områdenavn, der ikke er defineret, kan denne fejl opstå, da VBA -koden ikke kan finde navnet.
12345678 | Sub CopyRange ()Dim CopyFrom As RangeDim CopyTo As RangeIndstil CopyFrom = Sheets (1) .Range ("CopyFrom")Indstil CopyTo = Sheets (1) .Range ("CopyTo")CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesAfslut Sub |
Eksemplet ovenfor kopierer værdierne fra det navngivne område "CopyFrom" til det navngivne område "CopyTo" - på betingelse af at det er eksisterende navngivne områder! Hvis de ikke findes, vises fejlen 1004.
Den enkleste måde at undgå denne fejl i eksemplet ovenfor er at oprette områdenavne i Excel -projektmappen eller henvise til området i det traditionelle række- og kolonneformat, f.eks .: Område ("A1: A10").
VBA -fejl 1004 - Navn allerede taget
Fejlen kan også opstå, hvis du forsøger at omdøbe et objekt til et objekt, der allerede findes - for eksempel hvis vi forsøger at omdøbe Sheet1, men det navn, du giver arket, er allerede navnet på et andet ark.
123 | Sub NameWorksheet ()ActiveSheet.Name = "Sheet2"Afslut Sub |
Hvis vi allerede har et Sheet2, vil fejlen opstå.
VBA -fejl 1004 - Ukorrekt henvisning til et objekt
Fejlen kan også opstå, når du har henvist til et objekt forkert i din kode. For eksempel:
12345678 | Sub CopyRange ()Dim CopyFrom As RangeDim CopyTo As RangeIndstil CopyFrom = Range ("A1: A10")Indstil CopyTo = Range ("C1: C10")Område (CopyFrom) .CopyOmråde (CopyTo) .PasteSpecial xlPasteValuesAfslut Sub |
Dette vil igen give os fejl 10004
Ret koden, og fejlen vises ikke længere.
12345678 | Sub CopyRange ()Dim CopyFrom As RangeDim CopyTo As RangeIndstil CopyFrom = Range ("A1: A10")Indstil CopyTo = Range ("C1: C10")CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesAfslut Sub |
VBA -fejl 1004 - Objektet blev ikke fundet
Denne fejl kan også opstå, når vi prøver at åbne en projektmappe, og projektmappen ikke findes - projektmappen i dette tilfælde er det objekt, der ikke findes.
1234 | Sub OpenFile ()Dim wb Som projektmappeIndstil wb = Workbooks.Open ("C: \ Data \ TestFile.xlsx")Afslut Sub |
Selvom meddelelsen vil være anderledes i fejlboksen, er fejlen stadig 1004.