【Excel VBA】開始行と最終行の印刷範囲を手動で指定!最終列までは自動判別して印刷する方法!(設定例・サンプルあり!)

エクセルで、データを縦列で自動で追加していくマクロを作ったのですが、
それに合わせて印刷範囲を自動で判別してくれる必要があり、色々と調べました。

目次

印刷範囲の設定

厄介なことに最終列を自動で判別するだけでなく、
印刷範囲の「開始行」と「最終行」は常に固定のため、数値でしておきたくて作成したのが以下の文です。

    Dim Start_Low As Long
    Dim Last_Col As Long
    
    '洗濯中のシートで処理
    With ActiveSheet
    
        '指定シートの開始行を指定(この場合は2行目のA列から)
        Start_Row = .Cells(2, "A").Row
        '指定シートの最終列を取得(34行目の最終列までを範囲に)
        Last_Col = .Cells(34, Columns.Count).End(xlToLeft).Column
        '印刷範囲を設定(34行目A列から開始行の最終列までを範囲指定)
        Pr_Area = .Range(.Cells(34, "A"), .Cells(Start_Row, Last_Col)).Address
        
    End With
    

実際に使って印刷プレビューをしてみる

    Dim Start_Low As Long
    Dim Last_Col As Long

    With ActiveSheet
    
        '指定シートの開始行を指定(2行目のA列)
        Start_Row = .Cells(2, "A").Row
        '指定シートの最終列を取得(34行目の最終列まで)
        Last_Col = .Cells(34, Columns.Count).End(xlToLeft).Column
        '印刷範囲を設定(34行目A列から開始行の最終列までを範囲指定)
        Pr_Area = .Range(.Cells(34, "A"), .Cells(Start_Row, Last_Col)).Address

        'サイズはA3に
        .PageSetup.PaperSize = xlPaperA3
        '印刷向きは横向き
        .PageSetup.Orientation = xlLandscape
        '選択した「Pr_Area」を印刷範囲に
        .PageSetup.PrintArea = Pr_Area
        '水平の中央位置に
        .PageSetup.CenterHorizontally = True
        '垂直の中央位置に
        .PageSetup.CenterVertically = True

        
        ' 印刷プレビュー
        .PrintOut Preview:=True
        
        ' 印刷範囲の設定解除
        .PageSetup.PrintArea = False
        
    End With
    
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次