大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、印刷範囲を取得する方法と、その最終行や最終列を取得する方法について、ご紹介します。印刷範囲の取得は、PageSetupとPrintAreaを使います。最終行や最終列は、Rangeを使えば取得できます。具体的なVBAコードを使って、解説していきます。

はじめに

この記事では、印刷範囲を取得する方法と、その最終行や最終列を取得する方法について、ご紹介します。

印刷範囲は、『PageSetup.PrintArea』を使って取得できます。

印刷範囲の最終行や最終列は、Rangeを使って取得します。

では、具体的なVBAコードを使って、解説していきます。

この記事で紹介すること

  • 印刷範囲の取得
  • 印刷範囲の最終行と最終列の取得
  • 印刷範囲の開始行の開始列の取得

目次から見たい項目へ移動すると便利ですよ。

目次

ポイントとなるVBAコード

初めに、印刷範囲の取得について、ポイントとなるVBAコードを記載しておきます。

VBAコードだけ確認したい場合に、ご活用ください。

'印刷範囲を取得
a = ActiveSheet.PageSetup.PrintArea

With ActiveSheet.Range(a)
    b = .Rows(.Rows.Count).Row '最終行
    b = .Columns(.Columns.Count).Column '最終列
    b = .Row '開始行
    b = .Column '開始列
End With

では、解説していきます。

VBAで印刷範囲を取得する

印刷範囲を取得する方法について、ご紹介します。

印刷範囲を取得できれば、別シートや別ブックに、印刷範囲を設定することができます。

PageSetup.PrintAreaで取得

VBAで、印刷範囲を取得するのは、『PageSetup.PrintArea』を使えばできます。

やってみます。

次のワークシートから、印刷範囲を取得してみます。

使うワークシート

使うワークシート

印刷範囲を取得してみます。

Sub TEST1()
    
    '印刷範囲を取得
    a = ActiveSheet.PageSetup.PrintArea
    
    MsgBox a
    
End Sub

実行します。

印刷範囲を取得

印刷範囲を取得した結果

印刷範囲は、『"$B$3:$E$6"』となりました。

ワークシートの印刷範囲と合っていますね。正しく取得できています。

自動設定となっていると『空白""』となる

印刷範囲の取得で、少し注意点があります。

印刷範囲が、自動設定となっていると、印刷範囲を取得できません。

自動設定とは、初期設定のことです。

なので、印刷範囲を設定していないと、印刷範囲を取得できないことになります。

当たり前そうですけども、意外とこれで行き詰まったりします。

ちょっとやってみます。

印刷範囲を設定していないワークシートです。

印刷範囲の設定なし

印刷範囲を設定していないワークシート

改ページプレビューで見てみます。

印刷範囲が設定されているように見える

印刷範囲を設定していないワークシート

印刷範囲の設定がされてそうです。

このワークシートから印刷範囲を取得してみます。

Sub TEST2()
    
    '印刷範囲を取得
    a = ActiveSheet.PageSetup.PrintArea
    
    MsgBox a
    
End Sub

実行します。

印刷範囲は空白""となる

印刷範囲が設定されていないワークシートから印刷範囲を取得した結果

結果は、『空白""』となりました。

印刷範囲を設定していなくて、初期の設定のままなので、印刷範囲は、空白となりました。

印刷範囲を取得する場合は、印刷範囲が設定されている必要があります。

VBAで印刷範囲の最終行と最終列を取得

印刷範囲の最終行と最終列は、『Range』を使って取得します。

『PageSetup.PrintArea』を使って、印刷範囲を取得すると『$A$1:$D$4』という感じで、アドレスになっています。

なので、このアドレスをRangeの中に入れて、最終行と最終列を取得します。

印刷範囲の最終行

印刷範囲の最終行を、取得するイメージはこんな感じです。

印刷範囲で、最終行のイメージ

印刷範囲で最終行のイメージ

では、VBAコードを作って最終行を取得してみます。

使うワークシートは、こちらです。

使うワークシート

印刷範囲を設定したワークシート

印刷範囲はあらかじめ設定してあります。

印刷範囲の最終行を取得するVBAコードです。

Sub TEST3()
    
    '印刷範囲を取得
    a = ActiveSheet.PageSetup.PrintArea
    
    With ActiveSheet.Range(a)
        '最終行
        b = .Rows(.Rows.Count).Row
    End With
    
    MsgBox b
    
End Sub

実行してみます。

印刷範囲の最終行

印刷範囲の最終行を取得した結果

結果は、『6』行目となりました。

正しく、最終行が取得できています。

印刷範囲の最終列

印刷範囲の最終列を、取得するイメージはこんな感じです。

印刷範囲で、最終列のイメージ

印刷範囲で最終列のイメージ

では、印刷範囲の最終列を取得してみます。

使う表は、こちらです。

使うワークシート

印刷範囲を設定した表

印刷範囲はあらかじめ設定してあります。

印刷範囲の最終列を取得するVBAコードです。

Sub TEST4()
    
    '印刷範囲を取得
    a = ActiveSheet.PageSetup.PrintArea
    
    With ActiveSheet.Range(a)
        '最終列
        b = .Columns(.Columns.Count).Column
    End With
    
    MsgBox b
    
End Sub

実行してみます。

印刷範囲の最終列

印刷範囲の最終列を取得した結果

結果は、『5』列目となりました。

正しく、最終列が取得できています。

VBAで印刷範囲の開始行と開始列を取得

印刷範囲の開始行と開始列を取得する方法についても、記載しておきます。

印刷範囲が、セルA1からではなく、B2などから始まっているときに、必要となってきます。

最終行や列と同じように、Rangeを使って、開始行と開始列を取得してみます。

印刷範囲の開始行

印刷範囲の開始行を取得するイメージは、こちらです。

印刷範囲で、開始行のイメージ

印刷範囲の開始行を取得するイメージ

では、印刷範囲の開始行を取得してみます。

次のワークシートを使います。

使うワークシート

印刷範囲が設定されているワークシート

あらかじめ、印刷範囲は、設定してあります。

開始行を取得するVBAコードです。

Sub TEST5()
    
    '印刷範囲を取得
    a = ActiveSheet.PageSetup.PrintArea
    
    With ActiveSheet.Range(a)
        '開始行
        b = .Row
    End With
    
    MsgBox b
    
End Sub

実行してみます。

印刷範囲の開始行

印刷範囲の開始行を取得した結果

結果は、『3』行目となりました。

正しく、開始行が取得できています。

印刷範囲の開始列

印刷範囲の開始列を取得するイメージは、こちらです。

印刷範囲で、開始列のイメージ

印刷範囲の開始列を取得するイメージ

では、印刷範囲の開始列を取得してみます。

次のワークシートを使います。

使うワークシート

印刷範囲が設定されているワークシート

あらかじめ、印刷範囲は、設定してあります。

開始列を取得するVBAコードです。

Sub TEST6()
    
    '印刷範囲を取得
    a = ActiveSheet.PageSetup.PrintArea
    
    With ActiveSheet.Range(a)
        '開始列
        b = .Column
    End With
    
    MsgBox b
    
End Sub

実行してみます。

印刷範囲の開始列

印刷範囲の開始列を取得した結果

結果は、『2』列目となりました。

正しく、開始列が取得できています。

こんな感じで、開始行や列を取得できます。

印刷範囲が、セルA1から始まっていない場合に使えます。

おわりに

この記事では、印刷範囲を取得する方法についてご紹介しました。

印刷範囲を取得するには、『PageSetup.Print』を使います。

印刷範囲は、あらかじめ印刷範囲を設定していないと、取得できませんので注意です。

当たり前のようですけども、意外と詰まったりします。

印刷範囲の最終行や最終列は、Rangeを使えば、取得できます。

印刷範囲を取得して、印刷範囲を自由にコントロールしましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す