VBA-fel 1004-Programdefinierat eller objektdefinierat fel

Denna handledning kommer att förklara VBA-fel 1004- programdefinierat eller objektdefinierat fel.

VBA-körtidsfel 1004 är känt som ett programdefinierat eller objektdefinierat fel som uppstår medan koden körs. Att göra kodfel (se vår felhanteringsguide) är en viktig del av att lära sig VBA, men att veta varför ett fel uppstår hjälper dig att undvika att göra fel i framtida kodning.

VBA -fel 1004 - Objektet existerar inte

Om vi ​​hänvisar till ett objekt i vår kod, till exempel ett intervallnamn som inte har definierats, kan detta fel uppstå eftersom VBA -koden inte kan hitta namnet.

12345678 Sub CopyRange ()Dim CopyFrom As RangeDim CopyTo As RangeAnge CopyFrom = Sheets (1) .Range ("CopyFrom")Ange CopyTo = Sheets (1) .Range ("CopyTo")CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesAvsluta Sub

Exemplet ovan kommer att kopiera värdena från det namngivna intervallet "CopyFrom" till det namngivna intervallet "CopyTo" - förutsatt att detta är befintliga namngivna intervall! Om de inte finns visas fel 1004.

Det enklaste sättet att undvika detta fel i exemplet ovan är att skapa intervallnamnen i Excel -arbetsboken, eller hänvisa till intervallet i det traditionella rad- och kolumnformatet t.ex. Område ("A1: A10").

VBA -fel 1004 - Namn som redan tagits

Felet kan också uppstå om du försöker byta namn på ett objekt till ett objekt som redan finns - till exempel om vi försöker byta namn på Sheet1 men namnet du ger arket redan är namnet på ett annat blad.

123 Sub NameWorksheet ()ActiveSheet.Name = "Sheet2"Avsluta Sub

Om vi ​​redan har en Sheet2 kommer felet att inträffa.

VBA -fel 1004 - Felaktigt hänvisning till ett objekt

Felet kan också uppstå när du felaktigt har refererat till ett objekt i din kod. Till exempel:

12345678 Sub CopyRange ()Dim CopyFrom As RangeDim CopyTo As RangeAnge CopyFrom = Range ("A1: A10")Ange CopyTo = Range ("C1: C10")Område (CopyFrom) .CopyOmråde (CopyTo) .PasteSpecial xlPasteValuesAvsluta Sub

Detta kommer återigen att ge oss fel 10004

Korrigera koden, så visas felet inte längre.

12345678 Sub CopyRange ()Dim CopyFrom As RangeDim CopyTo As RangeAnge CopyFrom = Range ("A1: A10")Ange CopyTo = Range ("C1: C10")CopyFrom.CopyCopyTo.PasteSpecial xlPasteValuesAvsluta Sub

VBA -fel 1004 - Objektet hittades inte

Detta fel kan också uppstå när vi försöker öppna en arbetsbok och arbetsboken inte hittas - arbetsboken i det här fallet är objektet som inte hittas.

1234 Sub OpenFile ()Dim wb Som arbetsbokAnge wb = Workbooks.Open ("C: \ Data \ TestFile.xlsx")Avsluta Sub

Även om meddelandet kommer att vara annorlunda i felrutan, är felet fortfarande 1004.

wave wave wave wave wave