徵兆

當您在 Microsoft Visual Basic for Applications 巨集中使用 Location 屬性或 Location.Address 作為垂直或水平頁面切換時,您可能會收到以下錯誤訊息:

執行時錯誤 '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 SubSub 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 屬性前,新增程式碼選擇工作表中最後一個儲存格。 例如,使用以下程式碼選擇終端儲存格,使用位置屬性,然後重新選取原本的活動儲存格:

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 產品確實有上述問題。

其他相關資訊

如果你使用 Count 方法搭配 VPageBreaks 或 HPageBreaks 屬性,可能會得到零的結果。 此情況依「原因」部分列出的條件發生。 若有分頁標示,計數法可能會給出正確答案。 對於垂直或水平分頁的計數方法,如果分頁位於工作簿視窗可見區域附近,可能會得到預期結果。 前述的變通方法可用來取得預期計數。若視窗右側或下方的分頁點,若視窗與分頁距離小於分頁距離的一半,則可啟用計數方法並找到該分頁點。

參考

欲了解更多如何在巨集中捕捉錯誤的資訊,請點擊以下文章編號以瀏覽 Microsoft 知識庫中的文章:

213637 如何使用「錯誤中」來處理巨集中的錯誤

Need more help?

Want more options?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。