ママのスキンケアのお悩みにおすすめアイテム

いつもお世話になっています。

VBA初心者です。教えてください。
値が入力された最終行を含む、ページを取得して1ページまるごと印刷したいのですが、メゾットが解りません。

値が入力された最終行は常にことなります。
例)B4まで入力されていたら1ページまでを印刷する
例)B126まで入力されていたら3ページまでを印刷する

ちなみに、1ページはA4サイズです。

宜しくお願いします!

A 回答 (2件)

No1です。



>印刷範囲A1セルからU200までを3ページ分出力したい
「B列の最終行が、データ全体の最終行とは限らない」という意味でしょうか?

であるなら、ちょっと面倒ですが、改ページの位置を探して、ページの最終行までを印刷するようにすれば良さそうです。
改ページ位置の取得方法は
https://docs.microsoft.com/ja-jp/office/vba/api/ …
あたりが参考になると思います。
具体的には、求めた最終行以降の xlPageBreakAutomatic 又は xlPageBreakManual を探査すればよろしいかと。(←改行位置の設定方法によって、どちらなのかは変わりますが、xlPageBreakNone以外の値と考える方法もあります。)

ただし、全体の最終ページの場合はpagebreakが明示的には設定されていないようですので、UsedRangeまでの範囲で改ページが見つからなければ、そこまでを出力対象範囲として設定するのが良さそうです。
    • good
    • 0

こんにちは



>ページを取得して1ページまるごと印刷したいのですが、メゾットが解りません。
の一方で、
>例)B126まで入力されていたら3ページまでを印刷する
とあるので、「1ページ分印刷する」のではなく、「最終行までを印刷」という意味と解釈しました。

最終行は、「B列の最終行」として良いものと考えて、
 maxRow = Cells(Rows.Count, 2).End(xlUp).Row
で、B列の最終行の行番号を求めることができます。

印刷の対象の列数が不明ですが、仮に、変数colに代入されているものとします。
印刷設定などは事前に設定されているとして良いのなら、
 Range("A1").Resize(maxRow, col).PrintOut Copies:=1
で、基本的に指定範囲がプリントされるはずです。
必要に応じて、引数の設定を追加すればよろしいでしょう。
    • good
    • 0
この回答へのお礼

早速ありがとうございます。
しかし、私の伝え方が矛盾を含んでいたため、混乱させてしまいました。すみません。

【最終行を取得して、1ページ分まるごと印刷する】がVBAにてやりたいことです。
例)表にB4セルまで入力されたら、印刷範囲A1セルからU60セルまでを1ページ分出力したい
例)表にB126セルまで入力されていたら、印刷範囲A1セルからU200までを3ページ分出力したい

最終行までを印刷したいのではなく、最終行と余白の部分(A4サイズ)まで印刷がしたいです。

わかりにくく、申し訳ございません。

お礼日時:2020/08/03 16:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング