Excel で HPageBreaks または VPageBreaks.Location を使用すると、「範囲外の下付き文字」というエラー メッセージが表示される

現象

Microsoft Visual Basic for Applications マクロで Location プロパティまたは縦改ページまたは横改ページの Address.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.Address
    End 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.Address
    End Sub
    
    

回避策

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.Select

End Sub

場所プロパティが計算されたら、元のアクティブなセルをもう一度選択できます。 コードを使用して最初と最後のセル間をスクロールしたり、最後のセルを選択した後すぐに開始セルを再選択した場合でも、エラーが発生する可能性があります。 回避策を有効にするには、画面を再描画し、Location プロパティを計算する必要があります。 上記のコードを

Application.ScreenUpdating = False

画面の再描画を防ぐためにも、問題は発生します。

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。

追加情報

VPageBreaks または HPageBreaks プロパティと共に Count メソッドを使用すると、0 の結果が得られることがあります。 これは、"原因" セクションに記載されている条件で発生します。 改ページが表示されている場合は、Count メソッドが正しい答えを返す場合があります。 縦方向または横方向の改ページ用の Count メソッドを使用すると、改ページがブック ウィンドウの表示されている部分の近くにある場合に期待される結果が得られる場合があります。 前に示した回避策を使用して、予想されるカウントを取得できます。

ウィンドウから改ページまでの距離がページ間の距離の 2 分の 1 未満の場合、ブック ウィンドウの右側またはブック ウィンドウの下にある改ページを使用すると、カウント メソッドが機能し、改ページが配置されることがあります。

参考資料

マクロでエラーをトラップする方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft サポート技術情報) をクリックしてください。

213637 "On Error" を使用してマクロのエラーを処理する方法