重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

VBA素人です。教えて下さい。

エクセルシート1とシート2があります。

シート1に列数はA列からG列まで固定列ですが、行数が毎回変わるデータが入ります。
A列にはデータが何件あるのかカウントする関数が入っています。

シート2にはシート1のデータが反映されるようにvlookup関数が入った表が
B1:N125まで作成されています。
シート1のデータ10件単位で、シート2の表が1ページ印刷される表となっています。

シート1のA2:G11までのデータは
シート2のB1:N25までの表に反映さるようになっており、
シート2のB1:N25までで、1ページ目の印刷となっています。

同じく
シート1のA12:G21までのデータは
シート2のB26:N50まで反映され、2ページ目に印刷されるようになっています。

シート1のデータ量(行数)が毎日代わり、最大100行分まで。
シート2は最大10ページ分(最終行は125行)まで表が作成されています。

例えばシート1のデータが8件あれば、シート2の表は1ページのみ印刷、
シート1のデータが12件なら、シート2の表は1~2ページ印刷、
シート1のデータが24件なら、シート2の表は1~3ページ印刷・・・というように最大1~10ページまで印刷できるようなマクロを教えて下さい。

宜しくお願い致します。

A 回答 (2件)

やり方としては、次の3つ方法が考えられます。


印刷用シートの構成が分からないので、どの方法が最適か判断しかねますので、ご自分で好みの方法を選んでみて下さい。

データ件数に合わせて、PrintOut メソッドのToパラメータ(印刷を終了するページのページ番号)を調整する。

PrintOutする前に、印刷範囲を設定し、不要な部分を除外する。

PrintOutする前に、不要な行を非表示にする。


「何件あるのかカウントする関数が入っている」ということなので、PrintOut メソッドのToパラメータを指定するのが簡単ですかね?
    • good
    • 1
この回答へのお礼

ありがとうございます。
Toパラメータで出来ました。

お礼日時:2021/03/15 20:00

複数シートをVBAで印刷するには、


マクロの記録と同じようにArray関数に固定文字で固定シート名を指定(非表示シートが含まれているとVBAはエラー)し、シートを順次印刷
Worksheetsコレクションを使用し、グラフシート等のワークシート以外は対象外
表示シートだけを対象にして、
(この場合は、プリントスプールが別々になるので、共有プリンターで印刷する場合は、他の人の印刷と混ざる)1つのスプールで印刷する場合、シート名の配列を作成して一括で印刷する。

配列を使用せずに、Worksheet.Selectメソッドを使う方法もある。

全てのシートを印刷する。(非表示シートが含まれているとVBAはエラー)
VBAを使うには、事前に全シートを表示すること。
    • good
    • 0
この回答へのお礼

ありがとうございます。
勉強してやってみます。

お礼日時:2021/03/15 20:00

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