• ベストアンサー

印刷範囲をマクロで変更したい

エクセル2003で計算表を作りました。 入力シートと計算表シートに分け、入力シートのセルに打ち込んだものが計算表シートに反映されて自動計算してます。 計算表シートは毎日印刷するんですが、最多でも4ページ以上にはならないので、4ページ分作っています。 そこで、計算表シートのデータが入ってるページだけを範囲指定して、データの入ってないページは印刷されないようにしたいのですが、どのようにしたら可能でしょうか? 何かいい方法を教えていただけないでしょうか。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

一例です データが入ってるページを判断するセルを設定します 判断するセルは数式を設定しているセルにしてください 数式は該当データが無い場合は""(空白)になるようにしてください 次のマクロを標準モジュールにコピペし、ボタンに登録してください Sub test() Dim i As Integer i=0 If Range("a1").Value <> "" Then i = 1  '1ページ目の判断用セル仮にA1としています  If Range("a15").Value <> "" Then i = 2  '2ページ目の判断用セル仮にA15としています  If Range("a30").Value <> "" Then i = 3  '3ページ目の判断用セル仮にA30としています  If Range("a45").Value <> "" Then i = 4  '4ページ目の判断用セル仮にA45としています if i=0 then exit sub  ActiveSheet.PrintOut From:=1, To:=i End Sub 適宜、判断用のセルを自分の環境に合わせて、書き換えてください 参考までに

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.3

No1です。 >データの入ってないページも含んだ4ページ全てが印刷される >マクロの記録はとりました。 残念ながらそれでは、やりたいことには近づけないように思えます。 例えば、「印刷範囲を設定する」をマクロで記録をしてみるとか、選択範囲を印刷するを記録するとかしてみれば、あとはその前処理に何を付け加えれば、御自分が考えていることができるかわかってきますよね? 「4ページ全てが印刷」されるマクロは、回避したいことのマクロなのでは? <例 1> ・CurrentRegionで印刷したい範囲が取得できる場合 (印刷範囲を選択して、その範囲を印刷する) Sub Macro1()  Range("A1").CurrentRegion.Select  Selection.PrintOut Copies:=1 End Sub <例 2> ・A列の入力のある最下行までを印刷範囲に設定する方法 (ご質問のケースでは列数は固定みたいなので、例では8としてあります) Sub Macro2()  Set rng = Range(Cells(1, 1), Cells(Cells(Rows.Count).End(xlUp).Row, 8))  ActiveSheet.PageSetup.PrintArea = rng.Address  ActiveSheet.PrintOut Copies:=1 End Sub 他にもいろいろ考えられますが、シートの形式が不明なので例示のみ。 作成しているシートによって、何を基準に印刷する範囲を決めるのが一番良いかは変わってくることでしょう。

すると、全ての回答が全文表示されます。
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

マクロの自動記録をとってみましたか?

donsukadon
質問者

お礼

フォームのボタンを作って、データの入ってないページも含んだ4ページ全てが印刷されるマクロの記録はとりました。

すると、全ての回答が全文表示されます。

関連するQ&A