Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การแก้ไขปัญหา >> ข้อผิดพลาด Windows

วิธีแก้ไขข้อผิดพลาด 'Subscript Out of Range' ใน Visual Basic for Applications

Visual Basic for Applications (VBA) เป็นการนำภาษาการเขียนโปรแกรม Visual Basic ของ Microsoft ไปใช้งาน VBA สามารถใช้สำหรับเปิดใช้งาน UDFs, ทำงานอัตโนมัติ และเข้าถึง WinAPI ผ่าน DLLs อย่างไรก็ตาม ไม่กี่วันมานี้ มีรายงานมามากที่ผู้ใช้ไม่สามารถรันคำสั่งบางอย่างได้ และข้อผิดพลาด "Subscript Out of Range, Error 9" ปรากฏขึ้นขณะพยายามทำเช่นนั้น

วิธีแก้ไขข้อผิดพลาด  Subscript Out of Range  ใน Visual Basic for Applications

สาเหตุของข้อผิดพลาด "Subscript Out of Range" ใน VBA

หลังจากได้รับรายงานจากผู้ใช้หลายราย เราตัดสินใจสืบสวนปัญหาและคิดค้นชุดวิธีแก้ไขเพื่อแก้ไขอย่างสมบูรณ์ นอกจากนี้ เรายังดูเหตุผลที่ทำให้เกิดข้อผิดพลาดนี้และรายการไว้ดังนี้

  • องค์ประกอบที่ไม่มีอยู่ (Non-Existing Element): ในบางกรณี อาจเป็นไปได้ว่าคุณอ้างอิงองค์ประกอบในคำสั่งที่ไม่มีอยู่จริง อาจเป็นไปได้ว่า subscript มีขนาดใหญ่หรือเล็กกว่าช่วงของ subscripts ที่เป็นไปได้ หรือมิติอาจยังไม่ได้ถูกกำหนดให้กับอาเรย์ที่จุดนี้ในแอปพลิเคชัน
  • องค์ประกอบที่ไม่ได้กำหนด (Undefined Elements): อาจเป็นไปได้ว่าคุณไม่ได้ระบุจำนวนองค์ประกอบในโค้ดของคุณ สิ่งสำคัญคือ จำนวนองค์ประกอบในอาเรย์ต้องถูกกำหนดโดยใช้คำสั่ง "Dim" หรือ "ReDim"
  • สมาชิกคอลเลกชันไม่ถูกต้อง (Incorrect Collection Member): ในบางกรณี ผู้ใช้อาจอ้างอิงสมาชิกคอลเลกชันที่ไม่มีอยู่ หากอ้างอิงสมาชิกคอลเลกชันไม่ถูกต้อง ข้อผิดพลาดนี้อาจถูกกระตุ้น
  • สคริปต์ย่อ (Shorthand Script): อาจเป็นไปได้ว่าคุณใช้รูปแบบย่อของ subscript และมันระบุองค์ประกอบที่ไม่ถูกต้องโดยนัย สิ่งสำคัญคือต้องใช้ชื่อคีย์ที่ถูกต้อง

ตอนนี้คุณมีความเข้าใจพื้นฐานเกี่ยวกับลักษณะของปัญหาแล้ว เราจะไปสู่วิธีแก้ไข โปรดนำไปปฏิบัติในลำดับเฉพาะที่นำเสนอเพื่อหลีกเลี่ยงความขัดแย้ง

วิธีแก้ไขที่ 1: ตรวจสอบอาเรย์ (Arrays)

อาจเป็นไปได้ว่าคุณกำหนดค่าที่ไม่ถูกต้องสำหรับองค์ประกอบอาเรย์ ดังนั้น แนะนำให้ตรวจสอบค่าที่คุณกำหนดสำหรับองค์ประกอบอาเรย์ซ้ำ และตรวจสอบให้แน่ใจว่ามันถูกต้อง นอกจากนี้ ให้ตรวจสอบการประกาศของอาเรย์และ ตรวจสอบ ขอบเขตบนและล่าง หากอาเรย์ถูกเปลี่ยนขนาดใหม่ ให้แน่ใจว่าใช้ฟังก์ชัน LBound และ UBound เพื่อเข้าถึงเงื่อนไข ตรวจสอบการสะกดชื่อตัวแปร หากดัชนีเป็นตัวแปร

วิธีแก้ไขข้อผิดพลาด  Subscript Out of Range  ใน Visual Basic for Applications

วิธีแก้ไขที่ 2: ระบุจำนวนองค์ประกอบ

ในบางกรณี อาจเป็นไปได้ว่าคุณอาจไม่ได้กำหนดจำนวนองค์ประกอบในโค้ดของคุณ ซึ่งทำให้ข้อผิดพลาดถูกกระตุ้น แนะนำให้คุณระบุจำนวนองค์ประกอบในอาเรย์โดยใช้ฟังก์ชัน Dim หรือ ReDim

วิธีแก้ไขข้อผิดพลาด  Subscript Out of Range  ใน Visual Basic for Applications

วิธีแก้ไขที่ 3: เปลี่ยนโครงสร้าง (Construct)

ข้อผิดพลาดนี้มักถูกกระตุ้นเมื่อผู้ใช้ระบุสมาชิกคอลเลกชันที่ไม่ถูกต้องหรือไม่มีอยู่ ดังนั้น แทนที่จะระบุองค์ประกอบดัชนี แนะนำให้คุณเข้าถึงด้วยโครงสร้าง "For Each...Next"

วิธีแก้ไขข้อผิดพลาด  Subscript Out of Range  ใน Visual Basic for Applications

วิธีแก้ไขที่ 4: ตรวจสอบ Keyname และ Index

ในบางกรณี อาจเป็นไปได้ว่าคุณอาจใช้รูปแบบย่อของ subscript และมันระบุองค์ประกอบที่ไม่ถูกต้อง ดังนั้น แนะนำให้คุณใช้ คีย์ ชื่อ และ ดัชนี ที่ถูกต้องสำหรับคอลเลกชัน

วิธีแก้ไขข้อผิดพลาด  Subscript Out of Range  ใน Visual Basic for Applications