- ベストアンサー
マクロ vba 印刷
エクセルの印刷に関するマクロで教えて下さい。今ページ設定のシート設定で1~8行までを固定しています。B列の9~44行までが必要に応じて数字が入力されます。そして2ページ目の50~85行までが同じく必要に応じて数字が入力されます。3ページ目の91行~126行までが又同じく必要に応じて数字が入力されます。このように10ページまであります。つまり固定した1~8行までを見出しに下に表がずらーっとあります。ここで印刷をする際に、数字の入ったページまでを印刷するマクロを作りたいのです。普通に印刷すると10ページ印刷されてしまいます。例えば12行目まで入力があるならば、1ページだけを印刷。98行目まで入力があるならば、3ページ目までを印刷といった具合です。ちなみに途中数字が空白になる事はありません。詳しい方いらっしゃいましたら、お手数ですが教えて頂けませんでしょうか。宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
考え方を変えてみませんか 印刷を中心に考えるのでは無く データを中心に考えませんか、応用範囲が広がりますよ まず、印刷のフォーマットを1ページ分だけ作ります 次にデータを一覧表で作成します マクロの作成です データを1行目から見ていきます データがあれば印刷フォーマットの9行目へコピー 次の行へ これをデータが無くなるか、印刷フォーマットの44行目に行くまで繰り返し、印刷を行う まだ、データがあれば データは続きの36行目から 印刷フォーマットは9行目~44行目のデータを消去して9行目から 後は上の処理をデータが無くなるまで繰り返す この処理にすれば、1枚であろうが20枚、30枚に印刷枚数が増えても、この処理で対応することが出来ます 説明が下手でごめんなさい
その他の回答 (1)
- nda23
- ベストアンサー率54% (777/1415)
先ず、有効な行数を求めます。Cells(9,2).CurrentRegion.Rows.Count これはB9セルを含む列で、B列が空欄でないものの行数が得られます。 1~8行目も対象です。もし、B1~B8が空欄でない場合は上記行数から8を減じます。 これを36で割る(端数は切り上げ)とページ数が得られるので、PrintOutメソッドのToパラメータに指定すれば良いでしょう。