VBA 304号室:シートの印刷範囲を指定

スポンサーリンク
VBAの部屋
Kappo
Kappo

Excelシート上にプログラムでデータを挿入していると、シートの印刷範囲って変わってきませんか?
その時はだいたい
 ●印刷前に印刷範囲を指定する
ってことで・・・何でここは手動?ってなりますよね!!
そんな時はこの部屋の方法で印刷範囲をプログラムで行うと他の部屋にある印刷やPDF化にそのままプログラムが進むことが可能になってとても便利ですよ
また、一番したの方にコメント欄があるからよかったら質問・感想などメッセージ入れてください

Excelシートの印刷範囲を指定する

●●サブルーチンプログラム●●
標準モジュール(SheetCtrl)にプログラムを記述をVBAコードの標準モジュールに追加する☆
 ※標準モジュールの追加は「VBA 201号室:描画オブジェクトの名前取得」を参照してください

サブルーチンの内容
SheetPrintArea(shtName As String, rangeStr As String)
引数:shtName = シート名、rageStr = 範囲(Range)文字列:例=”A1:G10″
戻り値:正常に指定=True、対象のシート名が無い=False

▼プログラム▼

Public Function SheetPrintArea(shtName As String, rangeStr As String)

    Dim Ret As Boolean

    Ret = True

    'シート名の有無を確認
    Dim Buf As String

    On Error Resume Next    'エラーがあっても続行指定

    Buf = Sheets(shtName).Name

    If Err.Number > 0 Then    'エラーが有った場合は値がある

        Ret = False    'シート名が存在していない

    Else
        '--------------------
        'シートの印刷範囲

        Worksheets(shtName) .PageSetup.PrintArea = rangeStr

        '--------------------
    End If

    SheetPrintArea = Ret

End Function

サブルーチンプログラムができたので呼び出すコマンドボタンを配置してプログラムを記述する

コマンドボタンがクリックされた時に実行されるプログラム
「CommandButton8」
※ボタンの配置方法は「VBA 201号室:描画オブジェクトの名前取得」を参照してください

印刷範囲を変更するシート:シート名=Sheet2

呼び出すプログラム例
 シート名=”Sheet1”
 印刷範囲=A1~G20

シート名=”Sheet2”と印刷範囲=A1:G20を指定して印刷範囲を変更する

▼プログラム▼

Dim rStr As String
Dim ret As Boolean

rStr = "A1:G20"

ret = SheetPrintArea("Sheet1", rStr)

If ret = False Then
  Call MsgBox("シート名のエラー", ,vbCritical+vbOKOnly, "エラー")
Endif

〇正常に印刷範囲が指定された場合

 印刷範囲がきれいに設定されましたね!!!

Amazon | 本, ファッション, 家電から食品まで | アマゾン
Amazon.co.jp 公式サイト。アマゾンで本, 日用品, ファッション, 食品, ベビー用品, カー用品ほか一億種の商品をいつでもお安く。通常配送無料(一部を除く)

  

VBAの部屋
スポンサーリンク
シェアする
Kappoをフォローする

コメント

タイトルとURLをコピーしました