: User Defined Type ไม่ได้กำหนดใน Excel VBA (2 Quick Solutions)

  • แบ่งปันสิ่งนี้
Hugh West

หนึ่งในข้อผิดพลาดที่พบบ่อยที่สุดที่เราพบขณะทำงานกับ 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 เป็นออบเจกต์อย่างง่าย ไม่ใช่ พจนานุกรม ตอนนี้ถ้าคุณรันโค้ดนี้ คุณจะไม่พบข้อผิดพลาดใดๆ เลย

Hugh West เป็นผู้ฝึกอบรมและนักวิเคราะห์ Excel ที่มีประสบการณ์สูงและมีประสบการณ์มากกว่า 10 ปีในอุตสาหกรรมนี้ เขาสำเร็จการศึกษาระดับปริญญาตรีสาขาการบัญชีและการเงิน และปริญญาโทสาขาบริหารธุรกิจ Hugh มีความหลงใหลในการสอนและได้พัฒนาแนวทางการสอนที่เป็นเอกลักษณ์ซึ่งง่ายต่อการติดตามและเข้าใจ ความรู้ความเชี่ยวชาญของเขาเกี่ยวกับ Excel ช่วยให้นักเรียนและผู้เชี่ยวชาญหลายพันคนทั่วโลกพัฒนาทักษะและความเป็นเลิศในอาชีพการงาน ฮิวจ์แบ่งปันความรู้ของเขากับคนทั้งโลกผ่านบล็อก โดยเสนอบทช่วยสอน Excel ฟรีและการฝึกอบรมออนไลน์เพื่อช่วยให้บุคคลและธุรกิจบรรลุศักยภาพสูงสุดของตนเอง