สารบัญ
หนึ่งในข้อผิดพลาดที่พบบ่อยที่สุดที่เราพบขณะทำงานกับ VBA ใน Excel คือไม่ได้กำหนดประเภทที่ผู้ใช้กำหนด ในบทความนี้ ฉันจะแสดงให้คุณเห็นว่าเหตุใดข้อผิดพลาดนี้จึงเกิดขึ้นและวิธีแก้ไขข้อผิดพลาดนี้
ดาวน์โหลดแบบฝึกหัดแบบฝึกหัด
ดาวน์โหลดแบบฝึกหัดแบบฝึกหัดนี้เพื่อฝึกในขณะที่คุณ กำลังอ่านบทความนี้อยู่
User-Defined Type Not Defined.xlsm
2 สาเหตุและวิธีแก้ปัญหา User Defined พิมพ์ไม่ได้กำหนดใน Excel VBA
มี 2 ปัญหาสำคัญเบื้องหลังข้อผิดพลาดที่พบบ่อยนี้ใน Excel VBA มาสำรวจรายละเอียดและค้นหาวิธีแก้ปัญหากัน
1. การสะกดคำผิดพลาดขณะประกาศตัวแปร
นี่คือสาเหตุสำคัญที่อยู่เบื้องหลังข้อผิดพลาดนี้ ส่วนใหญ่แล้ว ข้อผิดพลาด “User-Defined Type not Defined” เกิดจากการสะกดคำผิดขณะประกาศตัวแปร
ดูโค้ดบรรทัดต่อไปนี้
8692
หากคุณเรียกใช้โค้ดนี้ คุณจะได้รับกล่องแสดงข้อผิดพลาดที่แจ้งให้คุณทราบว่ามีข้อผิดพลาดอยู่ “User-Defined Type Not Defined” ควบคู่ไปกับบรรทัดนี้ คุณจะพบบรรทัดที่สองของโค้ดที่ไฮไลต์เป็นสีน้ำเงิน ซึ่งฉันเขียน “strng” แทนที่ “string” .
ฉันหวังว่าคุณจะเข้าใจประเด็น VBA ไม่รู้จักประเภทตัวแปร “strng” นั่นเป็นสาเหตุว่าทำไมจึงพิจารณาว่าเป็นประเภทตัวแปรใหม่ และคิดว่าคุณได้กำหนดไว้ที่ไหนสักแห่ง แต่เมื่อมันพบว่าคุณไม่ได้ประกาศไว้ที่ใดเลย มันแสดงข้อผิดพลาด
ดังนั้น ในขณะที่รันโค้ด VBA อย่างง่าย หากคุณพบข้อผิดพลาดนี้ ขั้นแรกให้ตรวจสอบการสะกดทั้งหมดของประเภทตัวแปรของคุณ
2. ขาดการอ้างอิงที่เหมาะสม
นี่เป็นอีกสาเหตุหนึ่งที่อยู่เบื้องหลังข้อผิดพลาดนี้ นั่นคือการขาดการอ้างอิงที่เหมาะสม บางครั้งเราใช้ออบเจกต์บางอย่างในโค้ดของเราที่ต้องการการอ้างอิงที่เหมาะสมจากช่อง การอ้างอิง Visual Basic มิฉะนั้น VBA จะไม่รู้จักวัตถุ
ดูโค้ด VBA ต่อไปนี้
5465
เรียกใช้รหัสนี้ คุณจะได้รับข้อผิดพลาดเดิม “ไม่ได้กำหนดประเภทที่ผู้ใช้กำหนด”, เน้นที่ วัตถุพจนานุกรม นี่เป็นเพราะ VBA ไม่รู้จัก วัตถุพจนานุกรม และถือว่าเป็นตัวแปรที่ผู้ใช้กำหนด ซึ่งไม่ได้ถูกกำหนดอย่างผิดพลาด
ตอนนี้คำถามที่ใหญ่ที่สุดคือ จะแก้ไขข้อผิดพลาดนี้ได้อย่างไร ง่าย. มี 2 วิธีในการแก้ไขข้อผิดพลาดนี้
⧪ วิธีแก้ไข 1: การตรวจสอบการอ้างอิงข้อกำหนดเบื้องต้นจากช่องอ้างอิง Visual Box
นี่คือ วิธีที่ฉลาดที่สุดในการแก้ปัญหานี้ ไปที่ เครื่องมือ > ปุ่มอ้างอิง ในริบบิ้น Visual Basic คลิกที่ ข้อมูลอ้างอิง .
กล่องโต้ตอบชื่อ ข้อมูลอ้างอิง จะเปิดขึ้น เลื่อนและค้นหา Microsoft Scripting Runtime (ขึ้นอยู่กับวัตถุที่คุณใช้ พจนานุกรมวัตถุ ต้องการ Microsoft Scripting Runtime เพื่อให้รู้จัก ดังนั้น ในขณะที่ใช้ออบเจกต์ในโค้ด VBA คุณต้องทราบข้อกำหนดเบื้องต้นเพื่อให้ VBA รู้จักวัตถุนั้น ไปที่ลิงก์นี้เพื่อดูข้อมูลเพิ่มเติม) ตรวจสอบมัน
กลับมาและรันโค้ด คุณจะไม่ได้รับข้อผิดพลาดใดๆ เนื่องจาก VBA สามารถจดจำ วัตถุพจนานุกรม ในครั้งนี้ได้
⧪ โซลูชันที่ 2: การประกาศว่าเป็นวัตถุบริสุทธิ์แทนที่จะเป็นวัตถุเฉพาะ
มีวิธีอื่นในการแก้ปัญหานี้ คุณสามารถประกาศวัตถุเป็นวัตถุบริสุทธิ์ แทนที่จะเป็น วัตถุพจนานุกรม
สังเกตบรรทัดของรหัสต่อไปนี้
7734
ที่นี่ฉันได้ประกาศตัวแปร MyDictionary เป็นออบเจกต์อย่างง่าย ไม่ใช่ พจนานุกรม ตอนนี้ถ้าคุณรันโค้ดนี้ คุณจะไม่พบข้อผิดพลาดใดๆ เลย