อาการ
เมื่อคุณใช้คุณสมบัติ ตำแหน่งที่ตั้ง หรือ ตำแหน่งที่ตั้ง ของตัวแบ่งหน้าแนวตั้งหรือแนวนอนในแมโครแอปพลิเคชัน Microsoft Visual Basic คุณอาจได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:
ข้อผิดพลาดขณะเรียกใช้ ' 9 ': ตัวห้อยไม่อยู่ในช่วง
สาเหตุ
ปัญหานี้อาจเกิดขึ้นถ้าเงื่อนไขต่อไปนี้เป็นจริง:
-
เซลล์ที่ใช้งานอยู่จะอยู่เหนือตัวแบ่งหน้าแนวนอนหรือทางด้านซ้ายของตัวแบ่งหน้าแนวตั้งที่อ้างถึงโดย HPageBreaks หรือ VPageBreaks index
-
ตำแหน่งที่ตั้งตัวแบ่งหน้าแนวตั้งหรือแนวนอนจะปิดหน้าจอทางด้านขวาของหน้าต่างที่มองเห็นได้หรือด้านล่างของหน้าต่างที่มองเห็นได้ของเวิร์กบุ๊ก
-
คุณใช้แมโคร Visual Basic for แอปพลิเคชันใน Microsoft Excel ที่คล้ายกับโค้ดต่อไปนี้:
Sub TestHorizontal() ActiveSheet.Range("CZ1000").Value = 1 MsgBox ActiveSheet.HPageBreaks.Count MsgBox ActiveSheet.HPageBreaks(1).Location.Address MsgBox ActiveSheet.HPageBreaks(2).Location.AddressEnd Sub Sub TestVertical() ActiveSheet.Range("CZ1000").Value = 1 MsgBox ActiveSheet.VPageBreaks.Count MsgBox ActiveSheet.VPageBreaks(1).Location.Address MsgBox ActiveSheet.VPageBreaks(2).Location.Address MsgBox ActiveSheet.VPageBreaks(3).Location.AddressEnd Sub
วิธีแก้ไขปัญหาชั่วคราว
Microsoft มีตัวอย่างการเขียนโปรแกรมสำหรับภาพประกอบเท่านั้นโดยไม่มีการรับประกันทั้งที่แสดงหรือโดยนัย ซึ่งรวมถึงแต่ไม่จำกัดเพียงการรับประกันโดยนัยของเชิงพาณิชย์หรือการออกกำลังกายสำหรับวัตถุประสงค์ที่เฉพาะเจาะจง บทความนี้อนุมานว่าคุณคุ้นเคยกับภาษาการเขียนโปรแกรมที่ถูกแสดงและมีเครื่องมือที่ใช้ในการสร้างและตรวจแก้จุดบกพร่องขั้นตอน วิศวกรฝ่ายสนับสนุนของ Microsoft สามารถช่วยอธิบายฟังก์ชันการทำงานของกระบวนการเฉพาะได้แต่จะไม่ปรับเปลี่ยนตัวอย่างเหล่านี้เพื่อให้มีการเพิ่มฟังก์ชันการทำงานหรือสร้างกระบวนงานเพื่อตอบสนองความต้องการเฉพาะของคุณ เมื่อต้องการป้องกันไม่ให้เกิดปัญหานี้ให้เพิ่มโค้ดเพื่อเลือกเซลล์สุดท้ายที่ใช้ในเวิร์กชีตก่อนที่รหัสจะใช้คุณสมบัติ ตำแหน่งที่ตั้ง ของตัวแบ่งหน้าแนวนอนหรือแนวตั้ง ตัวอย่างเช่นใช้โค้ดต่อไปนี้เพื่อเลือกเซลล์สิ้นสุดให้ใช้คุณสมบัติ ตำแหน่งที่ตั้ง แล้วเลือกเซลล์ที่ใช้งานอยู่เดิมอีกครั้ง:
Sub CheckPageBreaks() 'Set object "currcell" equal to active cell. Set currcell = ActiveCell 'Select the last cell on the worksheet that has data. Range("IV65536").Select 'Include code with Location property here. x = ActiveSheet.HPageBreaks(2).Location.Address MsgBox x 'Example sets x equal to address of second horizontal page break. 'Then message box displays the address of the page break. 'Select original active cell. currcell.SelectEnd Sub
หลังจากที่มีการคำนวณคุณสมบัติ ตำแหน่งที่ตั้ง คุณอาจเลือกเซลล์ที่ใช้งานอยู่เดิมอีกครั้ง ถ้าคุณใช้โค้ดเพื่อเลื่อนไปมาระหว่างเซลล์แรกและเซลล์สุดท้ายหรือเลือกเซลล์สุดท้ายและเลือกเซลล์เริ่มต้นทันทีข้อผิดพลาดอาจยังคงเกิดขึ้น หน้าจอต้องวาดใหม่และมีการคำนวณคุณสมบัติ ตำแหน่งที่ตั้ง สำหรับการแก้ไขปัญหาชั่วคราวเพื่อให้มีประสิทธิภาพ ถ้าคุณใช้รหัสที่ด้านบนกับ
Application.ScreenUpdating = False
เมื่อต้องการป้องกันไม่ให้ออกจากหน้าจอปัญหายังคงเกิดขึ้น
สถานะ
Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ"
ข้อมูลเพิ่มเติม
ถ้าคุณใช้วิธีการ นับ ที่มีคุณสมบัติ VPageBreaks หรือ HPageBreaks คุณอาจได้รับผลลัพธ์ของศูนย์ ปัญหานี้เกิดขึ้นภายใต้เงื่อนไขที่แสดงอยู่ในส่วน "สาเหตุ" ถ้ามองเห็นตัวแบ่งหน้าวิธีการ นับจำนวน อาจให้คำตอบที่ถูกต้อง วิธีการ นับ สำหรับตัวแบ่งหน้าแนวตั้งหรือแนวนอนอาจให้ผลลัพธ์ที่คาดไว้ถ้าตัวแบ่งหน้าอยู่ใกล้กับส่วนที่มองเห็นได้ของหน้าต่างเวิร์กบุ๊ก วิธีแก้ไขปัญหาชั่วคราวที่กำหนดไว้ก่อนหน้านี้สามารถใช้เพื่อขอรับจำนวนครั้งที่คาดไว้ได้ ตัวแบ่งหน้าที่อยู่ทางด้านขวาของหน้าต่างเวิร์กบุ๊กหรือที่ด้านล่างของหน้าต่างสมุดงานอาจเปิดใช้งานวิธี นับจำนวน การทำงานและตัวแบ่งหน้านั้นจะอยู่ในระยะห่างจากหน้าต่างไปยังตัวแบ่งหน้าน้อยกว่าหนึ่งครึ่งระหว่างระยะห่างระหว่างตัวแบ่งหน้า
อ้างอิง
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการ trap ข้อผิดพลาดในแมโครให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
๒๑๓๖๓๗ วิธีใช้ "ข้อผิดพลาด" เมื่อต้องการจัดการข้อผิดพลาดในแมโคร