VBA-feil 1004-Programdefinert eller objektdefinert feil

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.

wave wave wave wave wave