Spis treści
Jednym z najczęstszych problemów, które napotykamy podczas pracy z kopiowanie i wklejanie w VBA to błąd czasu pracy 1004 : Metoda PasteSpecial klasy Range nie powiodła się W tym artykule pokażę Ci, jakie są możliwe przyczyny tego błędu i jak je rozwiązać, z odpowiednimi przykładami i ilustracjami.
Pobierz Zeszyt ćwiczeń
Pobierz ten zeszyt ćwiczeń, aby ćwiczyć podczas czytania tego artykułu.
PasteSpecial Method Failed.xlsmPasteSpecial Method of Range Class Failed: Przyczyny i rozwiązania
Bez dalszej zwłoki przejdźmy do naszej głównej dyskusji, czyli jakie mogą być możliwe przyczyny tego błędu i jak je rozwiązać.
Powód 1: Dostęp do metody PasteSpecial bez kopiowania czegokolwiek
Jest to najczęstsza przyczyna błędu, czyli próba dostępu do PasteSpecial metoda bez kopiowania czegokolwiek.
Aby to zrozumieć, sprawdź VBA kod.
⧭ Kod VBA:
Sub PasteSpecial_Method_of_Range_Class_Failed() Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub
Tutaj użyliśmy PasteSpecial sposób VBA bez kopiowania czegokolwiek. Więc Excel wyświetli błąd czasu pracy 1004 kiedy go uruchomisz.
⧭ Rozwiązanie:
Aby rozwiązać ten problem, należy najpierw skopiować zakres komórek, a następnie uzyskać dostęp do PasteSpecial metoda.
Sub PasteSpecial_Method_of_Range_Class_Failed() Application.Range("B3:B5").Copy Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub
Gdy uruchomisz ten kod, wklei on formuły z zakresu B3:B5 aktywnego arkusza do wybranego zakresu.
Read More: Wklejanie Specjalna metoda klasy arkusza nie powiodło się (Reasons & Solutions)
Powód 2: Dostęp do metody PasteSpecial z błędem pisowni
Jest to kolejna częsta przyczyna błędu, a mianowicie, aby uzyskać dostęp do PasteSpecial metoda z błędem(ami) ortograficznym(i) w jakimkolwiek argumencie.
Zobacz. VBA Tutaj popełniliśmy błąd ortograficzny w argumencie xlPasteAll .
⧭ Kod VBA:
Sub PasteSpecial_Method_of_Range_Class_Failed() Application.Range("B3:B5").Copy Selection.PasteSpecial Paste:=xlPaseAll End Sub
Kiedy uruchomisz ten kod, otrzymasz. błąd czasu pracy 1004 .
⧭ Rozwiązanie:
Rozwiązanie jest proste, na pewno już się tego domyśliłeś. Upewnij się tylko, że pisownia wszystkich argumentów została wykonana poprawnie.
A błąd automatycznie zniknie.
Read More: Jak używać polecenia Wklej Specjalnie w Excelu (5 odpowiednich sposobów)
Podobne lektury
- Excel VBA: Kopiowanie zakresu do innego skoroszytu
- Kopiuj i wklej wartości do następnego pustego wiersza w Excelu VBA (3 przykłady)
- Zastosuj VBA PasteSpecial i zachowaj formatowanie źródłowe w Excelu
- Jak skopiować tę samą wartość do wielu komórek w programie Excel (4 metody)
- Excel VBA do kopiowania wierszy do innego arkusza na podstawie kryteriów
Powód 3: Otwieranie nowego skoroszytu po skopiowaniu powoduje anulowanie trybu kopiuj/wklej
Jest to kolejny ważny powód błędu, czyli zrobienie czegoś, co anuluje tryb kopiowania / wklejania przed wklejeniem.
Spójrz na następujący kod, aby wyraźnie zrozumieć.
⧭ Kod VBA:
Sub PasteSpecial_Method_of_Range_Class_Failed() Workbooks("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").Select Selection.PasteSpecial Paste:=xlPasteAllEnd Sub
Tutaj skopiowaliśmy zakres B3:B5 od Plansza1. skoroszytu o nazwie Workbook1 .
Następnie utworzyliśmy nowy skoroszyt o nazwie Zeszyt ćwiczeń2 w tym samym folderze i próbował wkleić skopiowany zakres do zakresu B3:B5 z Plansza1. tego zeszytu.
Ale kiedy uruchomimy kod, wyświetli on Metoda PasteSpecial klasy Range nie powiodła się Błąd, ponieważ w momencie tworzenia nowego skoroszytu tryb kopiuj/wklej zostanie odwołany.
⧭ Rozwiązanie:
Aby rozwiązać ten problem, najpierw zapisz linie kodu, aby utworzyć nowy skoroszyt o nazwie Zeszyt ćwiczeń2 .
Następnie wstawić wiersze, aby aktywować Workbook1 i skopiować z niego pożądany zakres.
I wreszcie aktywować Zeszyt ćwiczeń2 i wklejamy tam skopiowany zakres.
Sub PasteSpecial_Method_of_Range_Class_Failed() Dim Workbook2 As Workbook Set Workbook2 = Workbooks.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
Uruchom ten kod. Skopiuje on zakres B3:B5 z Plansza1. z Workbook1.
I wklej go do Plansza1. nowo utworzonego skoroszytu o nazwie Zeszyt ćwiczeń2 .
⧭ Środki ostrożności:
Oczywiście, nie zapomnij o tym, by zachować Workbook1 otwarte podczas uruchamiania kodu.
Read More: Jak wyłączyć Kopiuj i Wklej w Excelu bez makr (Z 2 kryteriami)
Powód 4: Zmiana Application.CutCopyMode na False, która anuluje tryb kopiowania/wklejania
W końcu może być inna przyczyna wystąpienia błędu.Możemy wyłączyć Application.CutCopyMode omyłkowo przed uzyskaniem dostępu do PasteSpecial metoda.
Choć nie jest to bardzo częsta praktyka, to jednak czasem ją wykonujemy, gdy mamy pracować z długą liczbą wierszy.
Zobacz poniższy kod, aby go zrozumieć. Tutaj skopiowaliśmy zakres B3:B5 , ale odwołał CutCopyMode przed wklejeniem go.
⧭ Kod VBA:
Sub PasteSpecial_Method_of_Range_Class_Failed() Range("B3:B5").Copy Application.CutCopyMode = False Range("D3:D5").PasteSpecial Paste:=xlPasteAll End Sub
Kiedy uruchomisz kod, pokaże on Metoda PasteSpecial klasy Range nie powiodła się błąd.
⧭ Rozwiązanie:
Pewnie już wszyscy domyśliliście się rozwiązania. Jest ono dość proste. Wystarczy usunąć z kodu linijkę, która zamienia CutCopy tryb wyłączony.
Tak więc, prawidłowe VBA kod będzie:
Sub PasteSpecial_Method_of_Range_Class_Failed() Range("B3:B5").Copy Range("D3:D5").PasteSpecial Paste:=xlPasteAll End Sub
Skopiuje zakres B3:B5 i wklej go nad D3:D5 bez żadnych kłopotów.
Read More: VBA Wklej Specjalnie do kopiowania wartości i formatów w Excelu (9 przykładów)
Rzeczy do zapamiętania
Tutaj pokazałem tylko problemy, które można napotkać podczas pracy z PasteSpecial sposób w VBA. Jeśli chcesz poznać PasteSpecial szczegółowo, odwiedź ten link .
Wniosek
Tak więc, w skrócie, są to przyczyny, które mogą spowodować. run-time error 1004: Metoda wklejania specjalnego od klasy Range nie powiodła się Mam nadzieję, że dobrze zrozumiałeś wszystkie punkty i że pomogą Ci one w przyszłości. Czy znasz jeszcze jakieś inne powody? A jeśli masz jakieś problemy, możesz nas zapytać. I nie zapomnij odwiedzić naszej strony ExcelWIKI po więcej postów i aktualizacji.