なんだかGoodVibes

日々の勉強メモです。

【VBA】印刷時のトップ行を取得する

今回は、改ページなどがある場合に
印刷した際にトップになる行を取得するサンプルです。
では、サンプルです。

Sub Main()

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets(1)
    
    Dim topRowArr() As Long
    ReDim topRowArr(0)
    
    ' 一行目を予め配列に入れておく
    topRowArr(UBound(topRowArr)) = 1
    
    ' 改ページがない場合のエラー回避
    On Error GoTo Continue
    Dim C As HPageBreak
    For Each C In ws.HPageBreaks
        ReDim Preserve topRowArr(UBound(topRowArr) + 1)
        topRowArr(UBound(topRowArr)) = C.Location.Row
    Next C
Continue:

End Sub

改ページを取得する方法で印刷トップ位置を調べています。
なので、改ページのない1行目が手動で配列に格納しています。
HPageBreaksで改ページ位置を取得している処理では
改ページが存在しない場合はエラーとなってしまうので
エラー回避しています。
以上です。