คุณจะได้รับข้อความแสดงข้อผิดพลาด "ตัวห้อยออกจากช่วง" เมื่อคุณใช้ HPageBreaks หรือ VPageBreaks ที่ตั้งใน Excel


อาการ


เมื่อคุณใช้คุณสมบัติ ตำแหน่งที่ตั้ง หรือ ตำแหน่งที่ตั้ง ของตัวแบ่งหน้าแนวตั้งหรือแนวนอนในแมโครแอปพลิเคชัน 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:
๒๑๓๖๓๗ วิธีใช้ "ข้อผิดพลาด" เมื่อต้องการจัดการข้อผิดพลาดในแมโคร