• ベストアンサー

マクロでの印刷

エクセルのシート1に10の表が有ります。1の表に入力して一杯になったら次、2の表に入力、次は3の表にと入力していきます。この表の入力済みの分をマクロで印刷するのですが、マクロ文で A、1だけ印刷の文。B、1と2を印刷の文。C、1と2と3を印刷の文。D、1と2と3と4を印刷の文。・・・・・・・と書いています。 印刷するときは入力済みの枚数を入力してIF文でA、B、C、D・・・・・・に飛ばしています。この方法以外に、1から10までの印刷の一つの文を書いていてその文から上記のA、B、C、Dのように印刷出来る方法はありませんでしょうか。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

#2です。 データ入力セルの左上隅のセルと表の各塊のセル範囲(1枚に印刷する印刷範囲)をテーブル化して下記のようにすればどうでしょうか。もう1つ、データ入力範囲もテーブル化すれば、範囲をクリアするのに使えますが略。 Sub test01() '----データ入力セルの左上隅のセル10個 a = Array("c2", "h2", "m2", "r2", "w2", "c20", _ "h20", "m20", "r20", "W20") '----表の各塊のセル範囲(1枚に印刷する印刷範囲)10個。上記と順序は対応していること。 b = Array("a1:e18", "f1:j18", "k1:o18", "p1:t18", _ "u1:y18", "a20:e38", "f20:j38", "k20:o38", "p20:t38", _ "u20:y38") For i = 0 To 9 If Range(a(i)) <> "" Then Range(b(i)).PrintOut '必要あらばデータ範囲をクリアする End If Next i End Sub

hoshi7777
質問者

お礼

本当にありがとうございました。

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

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

#1です。紙1枚(1ページ)に印刷する印刷範囲はどうなっているか教えてください。 H列を含む部分も「A列と共に」印刷するなら、どちらか 1個所でも入力があると印刷するのだから、私の例では C2とH2を空白かどうか聞けば良いです。 If (Cells(a(i), "C") <> "") Or (Cells(a(i), "H") <> "") Then Range(Cells(a(i), 1), Cells(a(i + 1) - 3, "K")).PrintOut End If もし右ブロックと左ブロックが印刷で別々にするなら、 Sub test02() a = Array("c2", "h2", "c8", "h8") For i = 0 To 3 MsgBox Range(a(i)) Next i End Sub の例のようにArrayをセル番地(文字列)もつ手もあります。 それで空白で無いと判別したら、左右どちらのブロックか 区別して範囲指定して、PrintOutすれば良い。

hoshi7777
質問者

補足

ありがとうございました。表は縦に2枚、横に5枚の10枚です。印刷は表1枚を1枚の用紙に印刷します、入力順序は上の左端から右の表へと進んで行き上の表5枚が済んだら左端に戻り二段目の表を右の方に入力します。

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

各表のデータが入るべきセルの左上隅の行をテーブルに持ちます。そしてそこにデータが入っているか調べて、その表を印刷するかどうか、左右すれば良い。 骨子だけですが C列がデータの入る最左列とします。 Sub test01() a = Array(2, 8, 14, 20, 26) For i = 0 To UBound(a) If Cells(a(i), "C") <> "" Then Range(Cells(a(i), 1), Cells(a(i + 1) - 3, "D")).PrintOut End If Next i End Sub (テスト)手抜きで、3行しか入力しない表を5つ作りました。A2:D4、A8:D10,A14:D16、A20:D22、A26:D28の表です。後は表の見だしとします。 C列のa(i)のセルにデータがあれば、その表を印刷していきます。 a(i + 1) - 3,の3は実情に合わせて、何行前が、直上表の最終行かで変えてください。 後は、実際例ではどこをどう変えるべきかは、推定して 試行してください。

hoshi7777
質問者

補足

早速ありがとうございました。ご教授の例で右側にも表がある(たとえば入力欄がH列)の場合はどのようにすれば良いでしょうか。初心者のためよろしくお願いいたします。

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

関連するQ&A