Kļūda 1004: nesekmīga diapazona klases PasteSpecial metode

  • Dalīties Ar Šo
Hugh West

Viena no visbiežāk sastopamajām problēmām, ar ko saskaramies, strādājot ar kopēšana un ielīmēšana VBA ir darbības laika kļūda 1004 : Neveiksmīga diapazona klases PasteSpecial metode Šajā rakstā es jums parādīšu, kādi ir šīs kļūdas iespējamie iemesli un kā tos novērst, izmantojot atbilstošus piemērus un ilustrācijas.

Lejupielādēt Practice Workbook

Lejupielādējiet šo prakses darba burtnīcu, lai vingrinātos, kamēr lasāt šo rakstu.

PasteSpecial metode neizdevās.xlsm

Neveiksmīga diapazona klases PasteSpecial metode: cēloņi un risinājumi

Nekavēsimies un pāriesim pie mūsu galvenās diskusijas, proti, kādi varētu būt šīs kļūdas iespējamie iemesli un kā tos novērst.

1. iemesls: piekļuve PasteSpecial metodei bez kopēšanas

Šis ir visbiežāk sastopamais kļūdas iemesls. Tas ir, mēģinot piekļūt kontam PasteSpecial metodi, neko nekopējot.

Lai to skaidri saprastu, pārbaudiet šādus jautājumus. VBA kods.

⧭ VBA kods:

 Sub PasteSpecial_Method_of_Range_Class_Failed() Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub 

Šeit mēs izmantojām PasteSpecial metode VBA neko nekopējot. Tātad Excel parādīs izpildes laika kļūda 1004 kad to palaižat.

⧭ Risinājums:

Lai atrisinātu šo problēmu, vispirms ir jānokopē šūnu diapazons, pēc tam piekļūstot PasteSpecial metode.

 Sub PasteSpecial_Metod_of_Range_Class_Failed() Application.Range("B3:B5").Copy Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub 

Palaižot šo kodu, tiks ielīmētas diapazona formulas. B3:B5 no aktīvās darblapas uz atlasīto diapazonu.

Lasīt vairāk: Darblapas klases PasteSpecial metode neizdevās (iemesli & amp; Risinājumi)

2. iemesls: piekļuve PasteSpecial metodei ar pareizrakstības kļūdu

Tas ir vēl viens bieži sastopams kļūdas iemesls. Tas ir, lai piekļūtu PasteSpecial metode ar pareizrakstības kļūdu(-ām) jebkurā argumentā.

Aplūkojiet šādu informāciju. VBA kodu, lai tas būtu skaidrs. Šeit mēs esam pieļāvuši rakstības kļūdu argumentā xlPasteAll .

⧭ VBA kods:

 Sub PasteSpecial_Method_of_Range_Class_Failed() Application.Range("B3:B5").Copy Selection.PasteSpecial Paste:=xlPaseAll End Sub 

Palaižot šo kodu, tiks parādīts izpildes laika kļūda 1004 .

⧭ Risinājums:

Risinājums ir vienkāršs. Esmu pārliecināts, ka jūs to jau esat nojautuši. Vienkārši pārliecinieties, ka visu argumentu rakstība ir pareiza.

Kļūda automātiski izzudīs.

Lasīt vairāk: Kā lietot īpašo komandu Paste programmā Excel (5 piemēroti veidi)

Līdzīgi lasījumi

  • Excel VBA: diapazona kopēšana citā darbgrāmatā
  • Vērtību kopēšana un ielīmēšana uz nākamo tukšo rindu, izmantojot Excel VBA (3 piemēri)
  • Piemērot VBA PasteSpecial un saglabāt avota formatējumu programmā Excel
  • Kā kopēt vienu un to pašu vērtību vairākās Excel šūnās (4 metodes)
  • Excel VBA, lai kopētu rindas uz citu darblapu, pamatojoties uz kritērijiem

3. iemesls: jaunas darbgrāmatas atvēršana pēc kopēšanas, kas atceļ kopēšanas/ielīmēšanas režīmu

Tas ir vēl viens svarīgs kļūdas iemesls. Tas ir, lai pirms ielīmēšanas atceltu kopēšanas/ielīmēšanas režīmu.

Skaidrākai izpratnei aplūkojiet šādu kodu.

⧭ VBA kods:

 Sub PasteSpecial_Method_of_Range_Class_Failed() Workbook("Workbook1.xlsx").Worksheets("Sheet1").Range("B3:B5").Select Selection.Copy Dim Workbook2 As Workbook Set Workbook2 = Workbooks.Add Workbook2.SaveAs Filename:=ThisWorkbook.Path & "\" & "Workbook2.xlsx" Workbook2.Activate Workbook2.Unprotect Workbook2.Worksheets("Sheet1").Range("B3:B5").Selection.PasteSpecial Paste:=xlPasteAllEnd Sub 

Šeit mēs esam kopējuši diapazonu B3:B5 no Lapa1 darbgrāmatas ar nosaukumu Darba burtnīca1 .

Tad mēs esam izveidojuši jaunu darbgrāmatu ar nosaukumu Darba burtnīca2 tajā pašā mapē un mēģināja ielīmēt nokopēto diapazonu uz diapazonu B3:B5 no Lapa1 no šīs darbgrāmatas.

Bet, kad mēs palaidīsim kodu, tas parādīs Neveiksmīga diapazona klases PasteSpecial metode Kļūda, jo brīdī, kad mēs izveidojam jaunu darbgrāmatu. kopēšanas/ielīmēšanas režīms tiks atcelts.

⧭ Risinājums:

Lai atrisinātu šo problēmu, vispirms pierakstiet koda rindas, lai izveidotu jaunu darbgrāmatu ar nosaukumu Darba burtnīca2 .

Pēc tam ievietojiet rindas, lai aktivizētu Darba burtnīca1 un nokopējiet no tā vēlamo diapazonu.

Un visbeidzot, aktivizējiet Darba burtnīca2 un ielīmējiet tajā nokopēto diapazonu.

 Sub PasteSpecial_Metod_of_Range_Class_Failed() Dim Workbook2 As Workbook Set Workbook2 = Workbook2.Add Workbook2.SaveAs Filename:=ThisWorkbook.Path & "\" & "Workbook2.xlsx" Workbooks("Workbook1.xlsx").Activate Worksheets("Sheet1").Range("B3:B5").Select Selection.Copy Workbook2.Activate Worksheets("Sheet1").Range("B3:B5").Select Selection.PasteSpecial Paste:=xlPasteAll End Sub 

Palaidiet šo kodu. Tas kopēs diapazonu B3:B5 no Lapa1 no Darba burtnīca1.

Un ielīmējiet to Lapa1 no jaunizveidotās darbgrāmatas ar nosaukumu Darba burtnīca2 .

⧭ Piesardzība:

Protams, neaizmirstiet saglabāt Darba burtnīca1 atvērts, kamēr darbojas kods.

Lasīt vairāk: Kā atspējot kopēšanu un ielīmēšanu programmā Excel bez makroekrāniem (ar 2 kritērijiem)

4. iemesls: iestatot Application.CutCopyMode uz False, tiek atcelts kopēšanas/ielīmēšanas režīms.

Visbeidzot, var būt vēl viens iemesls, kāpēc kļūda notiek. Mēs varam izslēgt Application.CutCopyMode kļūdaini pirms piekļuves PasteSpecial metode.

Lai gan tā nav ļoti izplatīta prakse, tomēr dažreiz mēs to darām, ja mums ir jāstrādā ar lielu rindu skaitu.

Lai to skaidri saprastu, skatiet tālāk redzamo kodu. Šeit mēs esam nokopējuši diapazonu B3:B5 , bet atcēla CutCopyMode pirms tā ielīmēšanas.

⧭ VBA kods:

 Sub PasteSpecial_Method_of_Range_Class_Failed() Range("B3:B5").Copy Application.CutCopyMode = False Range("D3:D5").PasteSpecial Paste:=xlPasteAll End Sub 

Kad palaidīsiet kodu, tas parādīs. Neveiksmīga diapazona klases PasteSpecial metode kļūda.

⧭ Risinājums:

Domāju, ka līdz šim jūs visi jau esat uzminējuši risinājumu. Patiesībā tas ir pavisam vienkārši. Vienkārši noņemiet no koda rindu, kas pārvērš komandu CutCopy režīms izslēgts.

Tātad, pareizais VBA kods būs:

 Sub PasteSpecial_Method_of_Range_Class_Failed() Range("B3:B5").Copy Range("D3:D5").PasteSpecial Paste:=xlPasteAll End Sub 

Tas kopēs diapazonu B3:B5 un ielīmējiet to virs D3:D5 bez problēmām.

Lasīt vairāk: VBA Paste Special, lai kopētu vērtības un formātus programmā Excel (9 piemēri)

Lietas, kas jāatceras

Šeit esmu parādījis tikai tās problēmas, ar kurām var nākties saskarties, strādājot ar PasteSpecial metode VBA. Ja vēlaties uzzināt PasteSpecial metodi, apmeklējiet šo saiti .

Secinājums

Tātad, īsumā, šie ir iemesli, kas var izraisīt izpildes laika kļūda 1004: PasteSpecial metode no diapazona klases neizdevās Es ceru, ka jūs esat skaidri sapratuši visus punktus un tie jums ļoti palīdzēs nākotnē. Vai jums ir zināmi vēl kādi citi iemesli? Un vai jums ir kādas problēmas? Droši jautājiet mums. Un neaizmirstiet apmeklēt mūsu vietni. ExcelWIKI vairāk ziņu un atjauninājumu.

Hjū Vests ir ļoti pieredzējis Excel treneris un analītiķis ar vairāk nekā 10 gadu pieredzi šajā nozarē. Viņam ir bakalaura grāds grāmatvedībā un finansēs un maģistra grāds uzņēmējdarbības vadībā. Hjū aizraujas ar mācīšanu, un viņš ir izstrādājis unikālu mācīšanas pieeju, kas ir viegli izpildāma un saprotama. Viņa ekspertu zināšanas programmā Excel ir palīdzējušas tūkstošiem studentu un profesionāļu visā pasaulē uzlabot savas prasmes un izcelties karjerā. Izmantojot savu emuāru, Hjū dalās savās zināšanās ar pasauli, piedāvājot bezmaksas Excel apmācības un tiešsaistes apmācību, lai palīdzētu personām un uzņēmumiem pilnībā izmantot savu potenciālu.