Denne opplæringen forklarer VBA-feil 1004- programdefinert eller objektdefinert feil.
VBA-kjøretidsfeil 1004 er kjent som en programdefinert eller objektdefinert feil som oppstår mens koden kjører. Å lage kodefeil (se vår feilhåndteringsguide) er en viktig del av å lære VBA, men å vite hvorfor en feil oppstår hjelper deg med å unngå å gjøre feil i fremtidig koding.
VBA -feil 1004 - Objektet eksisterer ikke
Hvis vi refererer til et objekt i koden vår, for eksempel et områdenavn som ikke er definert, kan denne feilen oppstå ettersom VBA -koden ikke finner navnet.
12345678 | Sub CopyRange ()Dim CopyFrom As RangeDim CopyTo As RangeAngi CopyFrom = Sheets (1) .Range ("CopyFrom")Sett CopyTo = Sheets (1) .Range ("CopyTo")CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesSlutt Sub |
Eksemplet ovenfor vil kopiere verdiene fra det navngitte området "CopyFrom" til det navngitte området "CopyTo" - forutsatt at dette er eksisterende navngitte områder! Hvis de ikke eksisterer, vises Feil 1004.
Den enkleste måten å unngå denne feilen i eksemplet ovenfor er å opprette områdenavnene i Excel -arbeidsboken, eller referere til området i det tradisjonelle rad- og kolonneformatet, f.eks .: Område ("A1: A10").
VBA -feil 1004 - Navn allerede tatt
Feilen kan også oppstå hvis du prøver å gi et objekt et nytt navn til et objekt som allerede eksisterer - for eksempel hvis vi prøver å gi nytt navn til Ark1, men navnet du gir arket, er allerede navnet på et annet ark.
123 | Sub NameWorksheet ()ActiveSheet.Name = "Sheet2"Slutt Sub |
Hvis vi allerede har et ark 2, vil feilen oppstå.
VBA -feil 1004 - Feil refererer til et objekt
Feilen kan også oppstå når du har referert til et objekt i koden feil. For eksempel:
12345678 | Sub CopyRange ()Dim CopyFrom As RangeDim CopyTo As RangeAngi CopyFrom = Range ("A1: A10")Sett CopyTo = Range ("C1: C10")Område (CopyFrom) .CopyOmråde (CopyTo) .PasteSpecial xlPasteValuesSlutt Sub |
Dette vil igjen gi oss feilen 10004
Rett koden, og feilen vises ikke lenger.
12345678 | Sub CopyRange ()Dim CopyFrom As RangeDim CopyTo As RangeAngi CopyFrom = Range ("A1: A10")Sett CopyTo = Range ("C1: C10")CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesSlutt Sub |
VBA -feil 1004 - Objektet ble ikke funnet
Denne feilen kan også oppstå når vi prøver å åpne en arbeidsbok og arbeidsboken ikke blir funnet - arbeidsboken i dette tilfellet er objektet som ikke blir funnet.
1234 | Sub OpenFile ()Dim wb Som arbeidsbokSett wb = Workbooks.Open ("C: \ Data \ TestFile.xlsx")Slutt Sub |
Selv om meldingen vil være annerledes i feilboksen, er feilen fremdeles 1004.