"ข้อผิดพลาดรันไทม์ 5" เมื่อคุณใช้ฟังก์ชัน Mid(), Left() หรือ Right()


สำหรับ Microsoft Word 97 รุ่นของบทความนี้ ดู181102

สำหรับรุ่น Microsoft Word 98 ของบทความนี้ ดู181103

สำหรับรุ่น Microsoft Word 2000 ของบทความนี้ ดู201979

อาการ


ใน Microsoft Visual Basic for Applications (VBA), เมื่อคุณใช้Mid(), Right()หรือ ฟังก์ชันLeft()คุณอาจได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:

ข้อผิดพลาดขณะเรียกใช้ '5': "การเรียกกระบวนงานที่ไม่ถูกต้องหรืออาร์กิวเมนต์"

สาเหตุ


ลักษณะการทำงานนี้เกิดขึ้นเมื่ออาร์กิวเมนต์ความยาวสำหรับคำสั่งที่เป็นค่าลบ

ฟังก์ชันMid()ส่งกลับส่วนของสายอักขระข้อความเริ่มต้นที่ตำแหน่งของอักขระที่ระบุ ไวยากรณ์ของคำสั่งมีลักษณะดังนี้

Mid(<string>, <start> [, <length>])
ข้อความสายอักขระการค้นหา <สตริ >, <เริ่ม > เป็นตำแหน่งของอักขระที่จะเริ่มต้น และ < > ยาวจำนวนอักขระที่จะส่งคืน ถ้าอาร์กิวเมนต์ <ยาว > ไม่มีระบุ หรือหากมีน้อยกว่า <ยาว > อักขระในข้อความ ฟังก์ชันส่งกลับอักขระทั้งหมดจากตำแหน่ง <เริ่มต้น > ลงในส่วนท้ายของสายอักขระ

การแก้ปัญหา


Microsoft แสดงตัวอย่างการเขียนโปรแกรมเพื่อประกอบการเท่านั้น โดยไม่มีการรับประกันทั้งโดยชัดแจ้ง หรือโดยนัย กรณีนี้รวมถึงแต่มิได้จำกัดเพียงแค่การการรับประกันโดยนัยเกี่ยวกับการจำหน่ายเป็นสินค้าหรือความเหมาะสำหรับวัตถุประสงค์เฉพาะ บทความนี้ตั้งสมมติฐานว่าคุณมีความคุ้นเคยกับภาษาการเขียนโปรแกรมที่กำลังแสดงและคุ้นเคยกับเครื่องมือที่ใช้ใน การสร้างและแก้จุดบกพร่องของขั้นตอนการดำเนินการ วิศวกรฝ่ายสนับสนุนของ Microsoft สามารถช่วยอธิบายฟังก์ชันการทำงานของกระบวนการเฉพาะได้ แต่จะไม่ปรับเปลี่ยนตัวอย่างเหล่านี้เพื่อให้ฟังก์ชันการทำงานเพิ่มเติมหรือสร้างกระบวนงานเพื่อตอบสนองความต้องการเฉพาะของคุณ สำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:

290140วิธีการเรียกใช้โค้ดตัวอย่างสำหรับโปรแกรม Office XP จากบทความฐานข้อมูลองค์ความรู้

เมื่อต้องการแก้ไขปัญหานี้ ให้แน่ใจว่าการทดสอบความยาวของสตริงที่ ดังตัวอย่างต่อไปนี้:

Sub ErrorDoesNotOccur()
Dim Test As String
Dim ReturnText As String

' Empty string, could be passed as an empty dialog
' variable, for example.
Test = ""

' Test the length of the string to ensure
' that subtracting 1 from the length leaves
' at least 1 character.
If Len(Test) - 1 > 0 then
ReturnText = Mid(Test, Len(Test) - 1)
End If

End Sub