สารบัญ
หนึ่งในปัญหาที่พบบ่อยที่สุดที่เราพบขณะทำงานกับ การคัดลอกและวางใน VBA คือ ข้อผิดพลาดรันไทม์ 1004 : PasteSpecial Method of Range Class Failed . ในบทความนี้ ฉันจะแสดงให้คุณเห็นว่าสาเหตุที่เป็นไปได้อยู่เบื้องหลังข้อผิดพลาดนี้และวิธีแก้ไข พร้อมตัวอย่างและภาพประกอบที่เหมาะสม
ดาวน์โหลดสมุดงานแบบฝึกหัด
ดาวน์โหลดแบบฝึกหัดนี้เพื่อฝึกฝนในขณะที่คุณกำลังอ่านบทความนี้
PasteSpecial Method Failed.xlsm
PasteSpecial Method of Range Class Failed: สาเหตุ และแนวทางแก้ไข
โดยไม่รอช้า ไปที่การสนทนาหลักของเรากันเลย นั่นคือ สาเหตุที่เป็นไปได้ที่อยู่เบื้องหลังข้อผิดพลาดนี้ และวิธีแก้ปัญหาเหล่านั้น
เหตุผลที่ 1: การเข้าถึงวิธี PasteSpecial โดยไม่ต้องคัดลอกอะไร
นี่คือสาเหตุส่วนใหญ่ สาเหตุทั่วไปที่อยู่เบื้องหลังข้อผิดพลาด นั่นคือ พยายามเข้าถึงเมธอด PasteSpecial โดยไม่คัดลอกอะไรเลย
เพื่อให้เข้าใจชัดเจน ตรวจสอบโค้ด VBA ต่อไปนี้
⧭ รหัส VBA:
8759
ในที่นี้ เราใช้วิธี PasteSpecial ของ VBA โดยไม่มี คัดลอกอะไร ดังนั้น Excel จะแสดง ข้อผิดพลาดรันไทม์ 1004 เมื่อคุณเรียกใช้
⧭ วิธีแก้ไข:
เพื่อแก้ปัญหานี้ ก่อนอื่น คุณต้องคัดลอกช่วงของเซลล์ จากนั้นเข้าถึงเมธอด PasteSpecial
6999
เมื่อคุณเรียกใช้โค้ดนี้ มันจะวางสูตรของช่วง B3:B5 ของเวิร์กชีตที่ใช้งานอยู่ไปยังช่วงที่เลือก
อ่านเพิ่มเติม: วิธี PasteSpecial ของคลาสเวิร์กชีตล้มเหลว (เหตุผลและวิธีแก้ไข)
เหตุผลที่ 2: การเข้าถึงวิธี PasteSpecial ด้วยข้อผิดพลาดในการสะกดคำ
นี่เป็นอีกสาเหตุหนึ่งที่อยู่เบื้องหลัง ข้อผิดพลาด. นั่นคือ เพื่อเข้าถึงเมธอด PasteSpecial ที่มีข้อผิดพลาดในการสะกดในอาร์กิวเมนต์ใดๆ
ดูโค้ด VBA ต่อไปนี้เพื่อให้ชัดเจน เราสะกดผิดในอาร์กิวเมนต์ xlPasteAll .
⧭ รหัส VBA:
1624
เมื่อคุณเรียกใช้รหัสนี้ คุณจะได้รับ ข้อผิดพลาดรันไทม์ 1004
⧭ วิธีแก้ไข:
วิธีแก้ปัญหานั้นง่ายมาก ฉันแน่ใจว่าคุณเดาได้อยู่แล้ว เพียงตรวจสอบให้แน่ใจว่าการสะกดของอาร์กิวเมนต์ทั้งหมดถูกต้อง
และข้อผิดพลาดจะหายไปโดยอัตโนมัติ
อ่านเพิ่มเติม: วิธีใช้ Paste คำสั่งพิเศษใน Excel (5 วิธีที่เหมาะสม)
การอ่านที่คล้ายกัน
- Excel VBA: คัดลอกช่วงไปยังสมุดงานอื่น
- คัดลอกและวางค่าไปยังแถวว่างถัดไปด้วย Excel VBA (3 ตัวอย่าง)
- ใช้ VBA PasteSpecial และเก็บการจัดรูปแบบต้นฉบับใน Excel
- วิธีคัดลอกค่าเดียวกันในหลายเซลล์ใน Excel (4 วิธี)
- Excel VBA เพื่อคัดลอกแถวไปยังแผ่นงานอื่นตามเกณฑ์
เหตุผลที่ 3: การเปิดรายการใหม่สมุดงานหลังจากการคัดลอกที่ยกเลิกโหมดการคัดลอก/วาง
นี่เป็นอีกสาเหตุสำคัญที่อยู่เบื้องหลังข้อผิดพลาด นั่นคือ ทำบางสิ่งที่ยกเลิกโหมดการคัดลอก/วางก่อนที่จะวาง
ดูโค้ดต่อไปนี้เพื่อความเข้าใจที่ชัดเจน
⧭ รหัส VBA:
2316
เราได้คัดลอกช่วง B3:B5 จาก Sheet1 ของสมุดงานชื่อ Workbook1 .
จากนั้นเราได้สร้างสมุดงานใหม่ชื่อ สมุดงาน2 ในโฟลเดอร์เดียวกัน และพยายามวางช่วงที่คัดลอกไปยังช่วง B3:B5 ของ Sheet1 ของสมุดงานนั้น
แต่เมื่อเรารันโค้ด มันจะแสดงข้อผิดพลาด PasteSpecial Method of Range Class Failed เนื่องจากเมื่อเราสร้างสมุดงานใหม่ โหมดคัดลอก/วาง จะถูกยกเลิก
⧭ วิธีแก้ไข:
ในการแก้ปัญหานี้ ก่อนอื่น ให้เขียน ลงบรรทัดของรหัสเพื่อสร้างสมุดงานใหม่ที่ชื่อว่า สมุดงาน 2 .
จากนั้นแทรกบรรทัดเพื่อเปิดใช้งาน สมุดงาน 1 และคัดลอกช่วงที่ต้องการจากนั้น
และสุดท้าย เปิดใช้งาน Workbook2 และวางช่วงที่คัดลอกไว้ที่นั่น
2204
เรียกใช้รหัสนี้ มันจะคัดลอกช่วง B3:B5 จาก Sheet1 ของ Workbook1
แล้ววาง ลงใน Sheet1 ของสมุดงานที่สร้างขึ้นใหม่ชื่อ Workbook2 .
⧭ ข้อควรระวัง:
แน่นอนว่าอย่าลืมเปิด Workbook1 ไว้ในขณะที่เรียกใช้โค้ด
อ่านเพิ่มเติม: วิธีปิดใช้งานการคัดลอกและวางใน Excel โดยไม่ใช้มาโคร (มี 2 เกณฑ์)
เหตุผลที่ 4: เปลี่ยน Application.CutCopyMode เป็น False ซึ่งจะยกเลิกโหมดคัดลอก/วาง
สุดท้าย อาจมีสาเหตุอื่นที่ทำให้เกิดข้อผิดพลาดขึ้น เราอาจปิด Application.CutCopyMode โดยไม่ตั้งใจก่อนที่จะเข้าถึงเมธอด PasteSpecial
แม้ว่าจะไม่ใช่แนวทางปฏิบัติทั่วไป แต่บางครั้งเราก็ปิดเมื่อต้องการ ทำงานกับบรรทัดจำนวนมาก
ดูรหัสต่อไปนี้เพื่อทำความเข้าใจอย่างชัดเจน ที่นี่เราได้คัดลอกช่วง B3:B5 แต่ยกเลิก CutCopyMode ก่อนที่จะวาง
⧭ รหัส VBA:
6999
เมื่อคุณรันโค้ด มันจะแสดงข้อผิดพลาด PasteSpecial Method of Range Class Failed
⧭ วิธีแก้ไข:
ฉันคิดว่าตอนนี้คุณคงเดาคำตอบได้แล้ว มันค่อนข้างง่ายจริงๆ เพียงลบบรรทัดออกจากโค้ดที่ปิดโหมด CutCopy
ดังนั้น โค้ด VBA ที่ถูกต้องจะเป็น:
2737
<24
ระบบจะคัดลอกช่วง B3:B5 และวางช่วง D3:D5 โดยไม่มีปัญหาใดๆ
อ่านเพิ่มเติม: VBA Paste Special เพื่อคัดลอกค่าและรูปแบบใน Excel (9 ตัวอย่าง)
สิ่งที่ควรจำ
ในที่นี้ ฉันได้แสดงเฉพาะปัญหาที่คุณอาจพบขณะทำงานกับเมธอด PasteSpecial ใน VBA หากคุณต้องการทราบวิธีการ PasteSpecial โดยละเอียด โปรดไปที่ ลิงก์นี้ .
บทสรุป
โดยสรุปแล้ว วิธีเหล่านี้ เป็นสาเหตุที่ทำให้เกิด ข้อผิดพลาดรันไทม์ 1004: PasteSpecial Method od Range Class Failed ในโค้ดของคุณ ฉันหวังว่าคุณจะเข้าใจประเด็นทั้งหมดอย่างชัดเจนและสิ่งเหล่านี้จะช่วยคุณได้มากในอนาคต คุณรู้เหตุผลอื่น ๆ หรือไม่? และคุณมีปัญหาอะไรหรือไม่? อย่าลังเลที่จะถามเรา และอย่าลืมเยี่ยมชมเว็บไซต์ของเรา ExcelWIKI เพื่อดูโพสต์และอัปเดตเพิ่มเติม