Mục lục
Một trong những vấn đề phổ biến nhất mà chúng tôi gặp phải khi làm việc với sao chép và dán trong VBA là lỗi thời gian chạy 1004 : PasteSpecial Method of Range Class Failed . Trong bài viết này, tôi sẽ chỉ cho bạn những lý do có thể có đằng sau lỗi này và cách giải quyết những lý do đó, với các ví dụ và hình minh họa thích hợp.
Tải xuống Sách bài tập thực hành
Tải sách bài tập thực hành này xuống để thực hành khi bạn đang đọc bài viết này.
PasteSpecial Method Failed.xlsm
PasteSpecial Method of Range Class Failed: Nguyên nhân và Giải pháp
Còn chần chừ gì nữa, hãy bắt đầu cuộc thảo luận chính của chúng ta. Đó là, những lý do có thể gây ra lỗi này và cách giải quyết những lý do đó.
Lý do 1: Truy cập Phương thức PasteSpecial mà không cần sao chép bất kỳ thứ gì
Đây là lý do quan trọng nhất lý do phổ biến đằng sau lỗi. Nghĩa là cố gắng truy cập phương thức PasteSpecial mà không sao chép bất kỳ thứ gì.
Để hiểu rõ phương thức này, hãy kiểm tra mã VBA sau.
⧭ Mã VBA:
1880
Ở đây, chúng tôi đã sử dụng phương pháp PasteSpecial của VBA mà không cần sao chép bất cứ thứ gì. Vì vậy, Excel sẽ hiển thị lỗi thời gian chạy 1004 khi bạn chạy nó.
⧭ Giải pháp:
Để giải quyết vấn đề này, trước tiên, bạn cần sao chép một dải ô rồi truy cập phương thức PasteSpecial .
9878
Khi bạn chạy mã này, nó sẽdán các công thức của dải ô B3:B5 của trang tính đang hoạt động vào dải ô đã chọn.
Đọc thêm: PasteSpecial Method of Worksheet Class Failed (Lý do & Giải pháp)
Lý do 2: Truy cập Phương thức PasteSpecial có lỗi chính tả
Đây là một lý do phổ biến khác đằng sau lỗi chính tả lỗi. Nghĩa là, để truy cập phương thức PasteSpecial với (các) lỗi chính tả trong bất kỳ đối số nào.
Hãy xem mã VBA sau đây để hiểu rõ. Ở đây, chúng tôi đã mắc lỗi chính tả trong đối số xlPasteAll .
⧭ Mã VBA:
1123
Khi chạy mã này, bạn sẽ gặp phải lỗi thời gian chạy 1004 .
⧭ Giải pháp:
Giải pháp rất dễ dàng. Tôi chắc rằng bạn đã đoán được điều đó. Chỉ cần đảm bảo rằng tất cả các đối số đều được viết đúng chính tả.
Và lỗi sẽ tự động biến mất.
Đọc thêm: Cách sử dụng Dán Lệnh đặc biệt trong Excel (5 cách phù hợp)
Cách đọc tương tự
- VBA Excel: Sao chép phạm vi sang sổ làm việc khác
- Sao chép và dán các giá trị vào hàng trống tiếp theo bằng VBA Excel (3 ví dụ)
- Áp dụng VBA PasteSpecial và giữ nguyên định dạng nguồn trong Excel
- Cách sao chép cùng một giá trị trong nhiều ô trong Excel (4 phương pháp)
- VBA Excel để sao chép hàng sang trang tính khác dựa trên tiêu chí
Lý do 3: Mở một cái mớiSổ làm việc sau khi sao chép đã hủy chế độ sao chép/dán
Đây là một lý do quan trọng khác gây ra lỗi. Tức là thực hiện thao tác hủy chế độ sao chép/dán trước khi dán.
Hãy xem đoạn mã sau để hiểu rõ.
⧭ Mã VBA:
8312
Ở đây chúng tôi đã sao chép phạm vi B3:B5 từ Sheet1 của sổ làm việc có tên Workbook1 .
Sau đó, chúng tôi đã tạo một sổ làm việc mới có tên Workbook2 trong cùng một thư mục và cố gắng dán dải ô đã sao chép vào dải ô B3:B5 của Sheet1 của sổ làm việc đó.
Nhưng khi chúng tôi chạy mã, nó sẽ hiển thị Lỗi PasteSpecial Method of Range Class Failed , bởi vì thời điểm chúng tôi tạo sổ làm việc mới, chế độ sao chép/dán sẽ bị hủy.
⧭ Giải pháp:
Để giải quyết vấn đề này, trước tiên, hãy viết xuống các dòng mã để tạo sổ làm việc mới có tên Workbook2 .
Sau đó, chèn các dòng để kích hoạt Workbook1 và sao chép phạm vi mong muốn từ sổ đó.
Và cuối cùng, kích hoạt Workbook2 và dán phạm vi đã sao chép vào đó.
2998
Chạy mã này. Nó sẽ sao chép phạm vi B3:B5 từ Sheet1 của Workbook1.
Và dán nó vào Sheet1 của sổ làm việc mới tạo có tên là Workbook2 .
⧭ Thận trọng:
Tất nhiên, đừng quên mở Workbook1 trong khi chạymã.
Đọc thêm: Cách vô hiệu hóa sao chép và dán trong Excel mà không cần macro (với 2 tiêu chí)
Lý do 4: Chuyển Application.CutCopyMode thành False để Hủy Chế độ Sao chép/Dán
Cuối cùng, có thể có một lý do khác khiến lỗi xảy ra. Chúng tôi có thể tắt nhầm Application.CutCopyMode trước khi truy cập phương thức PasteSpecial .
Mặc dù đây không phải là một phương pháp rất phổ biến nhưng đôi khi chúng tôi vẫn mắc phải khi cần làm việc với số lượng dòng dài.
Hãy xem đoạn mã sau để hiểu rõ. Ở đây, chúng tôi đã sao chép phạm vi B3:B5 , nhưng đã hủy CutCopyMode trước khi dán nó.
⧭ Mã VBA:
3722
Khi bạn chạy mã, nó sẽ hiển thị lỗi Paste Special Method of Range Class Failed .
⧭ Giải pháp:
Tôi đoán bây giờ các bạn đã đoán ra giải pháp. Nó thực sự khá đơn giản. Chỉ cần xóa dòng khỏi mã tắt chế độ CutCopy .
Vì vậy, mã VBA chính xác sẽ là:
1513
Nó sẽ sao chép phạm vi B3:B5 và dán nó vào D3:D5 mà không gặp bất kỳ sự cố nào.
Đọc thêm: VBA Paste Special để sao chép các giá trị và định dạng trong Excel (9 ví dụ)
Những điều cần nhớ
Ở đây tôi chỉ trình bày những rắc rối mà bạn có thể gặp phải khi làm việc với phương thức PasteSpecial trong VBA. Nếu bạnmuốn biết chi tiết về phương pháp PasteSpecial , hãy truy cập liên kết này .
Kết luận
Vì vậy, tóm lại, những là những lý do có thể gây ra lỗi thời gian chạy 1004: PasteSpecial Method od Range Class Failed trong mã của bạn. Tôi hy vọng bạn đã hiểu rõ tất cả các điểm và những điều đó sẽ giúp ích cho bạn rất nhiều trong tương lai. Bạn có biết lý do nào khác không? Và bạn có vấn đề gì không? Hãy hỏi chúng tôi. Và đừng quên truy cập trang web của chúng tôi ExcelWIKI để biết thêm các bài đăng và cập nhật.