Зміст
Однією з найпоширеніших проблем, з якою ми стикаємося під час роботи з копіювання та вставка в VBA це помилка під час виконання 1004 : ВставкаСпеціальний метод класу діапазону завершився невдало У цій статті я покажу вам, які можливі причини цієї помилки і як їх усунути, з відповідними прикладами та ілюстраціями.
Завантажити Практичний посібник
Завантажте цей практичний посібник, щоб потренуватися, поки ви читаєте цю статтю.
PasteSpecial Method Failed.xlsmВставитиСпеціальний метод визначення класу дальності не вдався: причини та шляхи вирішення
Не відкладаючи на потім, перейдемо до нашої головної дискусії, тобто, які можуть бути можливі причини цієї помилки, і як їх вирішити.
Причина 1: Звернення до методу PasteSpecial без копіювання
Це найпоширеніша причина виникнення помилки. Тобто, спроба отримати доступ до PasteSpecial не копіюючи нічого.
Для того, щоб це чітко зрозуміти, перевірте наступне VBA код.
⧭ код VBA:
Sub PasteSpecial_Method_of_Range_Class_Failed() Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub
Тут ми використовували PasteSpecial метод VBA не копіюючи нічого. Таким чином, Excel відобразить помилка часу виконання 1004 коли ти його запускаєш.
⧭ Рішення:
Щоб вирішити цю проблему, спочатку потрібно скопіювати діапазон комірок, а потім звернутися до команди PasteSpecial метод.
Sub PasteSpecial_Method_of_Range_Class_Failed() Application.Range("B3:B5").Copy Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub
При виконанні цього коду буде вставлено формули діапазону B3:B5 активного аркуша до виділеного діапазону.
Читати далі: Не вдалося вставити спеціальний метод класу робочого аркуша PasteSpecial (причини та шляхи вирішення)
Причина 2: Звернення до методу PasteSpecial з орфографічною помилкою
Це ще одна поширена причина помилки, яка полягає в тому, що для доступу до PasteSpecial метод з орфографічною помилкою (помилками) в будь-якому аргументі.
Зверніть увагу на наступне VBA Тут ми допустили орфографічну помилку в аргументі xlPasteAll .
⧭ код VBA:
Sub PasteSpecial_Method_of_Range_Class_Failed() Application.Range("B3:B5").Copy Selection.PasteSpecial Paste:=xlPaseAll End Sub
Коли ви запустите цей код, ви отримаєте помилка часу виконання 1004 .
⧭ Рішення:
Розгадка проста, і я впевнений, що ви вже здогадалися про це. Просто переконайтеся, що написання всіх аргументів зроблено правильно.
І помилка автоматично зникне.
Читати далі: Як використовувати спеціальну команду "Вставити" в Excel (5 підходящих способів)
Схожі читання
- Excel VBA: копіювання діапазону в іншу книгу
- Копіювання та вставка значень у наступний порожній рядок в Excel VBA (3 приклади)
- Застосування VBA PasteSpecial та збереження вихідного форматування в Excel
- Як скопіювати однакове значення в декілька комірок в Excel (4 способи)
- Excel VBA для копіювання рядків на інший аркуш на основі критеріїв
Причина 3: Відкриття нової книги після копіювання скасовує режим копіювання / вставки
Це ще одна важлива причина помилки - перед вставкою зробити щось, що скасовує режим копіювання/вставки.
Подивіться на наступний код для чіткого розуміння.
⧭ код 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.Unprotected Workbook2.Workbooks2.Worksheets("Sheet1").Range("B3:B5").Select Selection.PasteSpecial Paste:=xlPasteAllEnd Sub
Тут ми скопіювали асортимент B3:B5 від Аркуш1 робочої книжки під назвою Робочий зошит1 .
Потім ми створили нову робочу книгу під назвою Робочий зошит2 в тій же папці і спробував вставити скопійований діапазон в діапазон B3:B5 з Аркуш1 з цього робочого зошита.
Але коли ми запустимо код, він покаже ВставкаСпеціального методу класу діапазону завершилась невдало Помилка, тому що в момент, коли ми створюємо нову книгу, то режим копіювання/вставки буде скасовано.
⧭ Рішення:
Щоб розв'язати цю задачу, спочатку запишемо рядки коду для створення нової робочої книги з іменем Робочий зошит2 .
Потім вставте рядки для активації Робочий зошит1 і скопіювати з нього потрібний діапазон.
І, нарешті, активуйте Робочий зошит2 і вставити туди скопійований діапазон.
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("Лист1").Range("B3:B5").Select Selection.Copy Workbook2.Activate Worksheets("Лист1").Range("B3:B5").Select Selection.PasteSpecial Paste:=xlPasteAll End Sub
Запустіть цей код. Він скопіює діапазон B3:B5 від Аркуш1 з Робочий зошит 1.
І вставити його в Аркуш1 новоствореної робочої книги під назвою Робочий зошит2 .
⧭ Застереження:
Звичайно, не забувайте зберігати Робочий зошит1 відкриті під час виконання коду.
Читати далі: Як відключити копіювання та вставку в Excel без макросів (за 2 критеріями)
Причина 4: Перетворення Application.CutCopyMode в False, що скасовує режим копіювання/вставки
Нарешті, може бути й інша причина виникнення помилки. Ми можемо вимкнути Application.CutCopyMode помилково перед тим, як отримати доступ до PasteSpecial метод.
Хоча це не дуже поширена практика, але іноді ми вдаємося до неї, коли маємо працювати з великою кількістю рядків.
Для наочного розуміння дивіться наступний код. Тут ми скопіювали діапазон B3:B5 , але скасував CutCopyMode перед наклеюванням.
⧭ код VBA:
Sub PasteSpecial_Method_of_Range_Class_Failed() Range("B3:B5").Copy Application.CutCopyMode = False Range("D3:D5").PasteSpecial Paste:=xlPasteAll End Sub
Коли ви запустите код, він покаже ВставкаСпеціальний метод класу діапазону завершився невдало помилка.
⧭ Рішення:
Думаю, ви вже здогадалися, як вирішити цю проблему. Насправді все дуже просто. Просто видаліть рядок з коду, який перетворює CutCopy режим вимкнено.
Отже, правильний VBA код буде:
Sub PasteSpecial_Method_of_Range_Class_Failed() Range("B3:B5").Copy Range("D3:D5").PasteSpecial Paste:=xlPasteAll End Sub
Він скопіює діапазон B3:B5 і наклеїти його на D3:D5 без жодних проблем.
Читати далі: Спеціальна вставка VBA для копіювання значень і форматів в Excel (9 прикладів)
Важливі моменти для запам'ятовування
Тут я показав лише ті неприємності, з якими ви можете зіткнутися при роботі з PasteSpecial метод в VBA. Якщо ви хочете дізнатися про PasteSpecial методику в деталях, відвідайте за цим посиланням .
Висновок
Отже, якщо коротко, то це причини, які можуть викликати помилка часу виконання 1004: PasteSpecial Method od Range Class Failed Сподіваюся, ви чітко зрозуміли всі пункти і вони дуже допоможуть вам у майбутньому. Знаєте інші причини? А у вас виникли якісь проблеми? Не соромтеся запитувати нас. І не забувайте заглядати на наш сайт ExcelWIKI для отримання додаткової інформації та оновлень.