徵狀
當您使用 location 屬性或 位置時。 垂直或水準分頁線的位址在 Microsoft Visual Basic for Applications 宏中,您可能會收到下列錯誤訊息:
執行時間錯誤 "9":下標超出範圍
原因
如果下列情況屬實,可能會發生這個問題:
-
作用中的儲存格位於水準分頁線上方,或由 HPageBreaks 或 VPageBreaks 索引所參照之垂直分頁線的左邊。
-
垂直或水準分頁符號位置是在顯示視窗右側或活頁簿可見視窗下方的螢幕上。
-
您在 Microsoft Excel 中使用 Visual Basic for Applications 宏,類似以下程式碼:
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 技術支援工程師可以協助說明特定程序的功能,但無法修改這些範例以提供附加功能或建構程序來滿足您的特定需求。 若要避免此問題,請新增程式碼來選取工作表中使用的最後一個儲存格,然後再使用水準或垂直分頁符號的 Location 屬性。 例如,使用下列程式碼來選取結束儲存格、使用 Location 屬性,然後重新選取原始的作用儲存格:
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
在計算 Location 屬性之後,您就可以再次選取原始的作用儲存格。 如果您使用程式碼在第一個和最後一個儲存格之間滾動,或選取最後一個儲存格,然後立即重新選取起始儲存格,則仍可能會發生此錯誤。 螢幕必須重新繪製,且會計算 Location 屬性,以解決因應措施生效的問題。 如果您使用上述程式碼搭配
Application.ScreenUpdating = False
若要避免螢幕重繪,仍會出現問題。
狀態
Microsoft 已確認<適用於>一節中所列的 Microsoft 產品確實有上述問題。
其他相關資訊
如果您將 Count 方法與 VPageBreaks 或 HPageBreaks 屬性搭配使用,您可能會收到零結果。 這會在「原因」一節所列的條件下發生。 如果顯示分頁符號, Count 方法可能會提供正確的答案。 如果分頁符號位於活頁簿視窗的可見部分附近,垂直或水準分頁線的 Count 方法可能會提供預期的結果。 先前已知的因應措施可用於取得預期的計數。在活頁簿視窗或活頁簿視窗下方的分頁符號,如果從視窗到分頁線的距離小於分頁線之間的距離,就能讓 Count 方法能正常運作,且該分頁符號位於分頁線上。
參考
如需如何在宏中捕獲錯誤的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
213637 如何使用「On Error」處理宏中的錯誤