« セル内容をもとにPasteメソッドで文字列の図形を作成する | トップページ | 印刷範囲の自動設定 »

2020年4月21日 (火)

改ページの追加・削除・位置取得

改ページとは
印刷する時のページの区切りのことです。
水平,垂直の2種類の改ページがあります。
設定された用紙サイズに合わせて自動設定されます。
また,自分で任意の位置に改行を追加することができます。
Vba20200421a

任意の位置で改ページを追加する場合は
手動では
[ページレイアウト]-[改ページ]-[改ページの挿入]をクリックすると
選択しているセルの上側に水平改行が追加されます。

水平改ページをVBAで追加していきます。
次のコードは
シート"Sheet1",10行目の上に
水平改ページを追加します。

水平改ページを追加するコード:

Sub macro20200421a()
'水平改ページを追加する

    Sheets("Sheet1").HPageBreaks.Add Before:=Cells(10, 1)
   
End Sub



次は,垂直改ページをVBAで追加していきます。

次のコードは
シート"Sheet1",5列目の左側に
垂直改ページを追加します。

垂直改ページを追加するコード:

Sub macro20200421b()
'垂直改ページを追加する

    Sheets("Sheet1").VPageBreaks.Add Before:=Cells(1, 5)

End Sub



設定した改ページを削除する方法についてみていきます。

次のコードは
シート"Sheet1"のすべての改ページを削除します。

すべての改ページを削除するコード:

Sub macro20200421c()
'すべての改ページを削除する

    Sheets("Sheet1").ResetAllPageBreaks

End Sub



次のコードは
水平改ページのみ削除します。
まとめて削除することはできないので
HPageBreaks.countで水平改行の総数を取得して
インデックス番号の大きいものから
1つ1つ削除していきます。

このコードを実行する場合に
印刷範囲が設定されていないと
シートに改行が設定されていても認識されずにエラーになります。

水平改ページのみ削除するコード:

Sub macro20200421d()
'改ページ 削除

    Dim sh As Worksheet
    Dim pb_count As Integer
    Dim i As Integer
   
    Set sh = Sheets("Sheet1")
    pb_count = sh.HPageBreaks.count

    For i = pb_count To 1 Step -1
        sh.HPageBreaks(i).Delete
    Next i

End Sub

垂直改ページを削除したい場合は
上記のコードの中で
HPageBreaksの部分をVPageBreaksに変更してください。



設定されている改ページの位置を
取得する方法を見ていきます。

次のコードは水平改ページが設定されている
行番号,列番号をメッセージボックスで表示します。

垂直改ページの設定を取得したい場合は
下記のコードの中で
HPageBreaksの部分をVPageBreaksに変更してください。

改ページの位置を取得するコード:

Sub Macro20200421e()
'改ページ 設定セル取得

    Dim i As Integer
    Dim obj As Object
   
    For Each obj In Sheets("Sheet1").HPageBreaks
        MsgBox obj.Location.Row & "," & obj.Location.Column
    Next obj

 End Sub

使用Ver:Excel For Office365

|

« セル内容をもとにPasteメソッドで文字列の図形を作成する | トップページ | 印刷範囲の自動設定 »

コメント

この記事へのコメントは終了しました。