[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『連番で印刷』(ゆう)
初めまして。
シート1:印刷をする表があるシート
シート2:シート1に必要なデータをコピペするシート
上記とは別にデータの入ったブックがあり、そこから必要な分だけデータを一行ずつとってきてシート2にコピペします。品名、準備、納品日、など・・・。そのデータの数(行数)だけ、A列に連番を入力します。(ここまでは手動でやろうと思っています。)
番号を入力すると、シート1の表の外(印刷範囲外)のどこかのセルと連動させて、例えば”1”と入力すれば、シート2の”1”の行のデータを表に転記させます。(ここまでは関数でやっています)
ここから、印刷ボタンを押せば、シート2の連番最後まで1,2,3,4,5・・・と自動で印刷されるようにしたいのです。このようなことは可能でしょうか。ご教示をお願いいたします。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
仮に、シート1の表の外(印刷範囲外)のどこかのセル を G1 としています。 実際にはコード内の PrintPreview は PrintOutにしてください。
Sub Test() Dim c As Range
For Each c In Sheets("Sheet2").Range("A1", Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp)) Sheets("Sheet1").Range("G1").Value = c.Value '★ DoEvents '念のため Sheets("Sheet1").PrintPreview 'PrintOut Next
End Sub
(β) 2015/06/30(火) 09:57
こんなに短いコードで出来るとは知りませんでした
もう一つお伺いしたいのですが、シート2のA列で、番号をふっていない行があった場合に、その行を飛ばして印刷することはできますでしょうか。
(ゆう) 2015/06/30(火) 10:30
たとえば
Sub Test2() Dim c As Range
For Each c In Sheets("Sheet2").Range("A1", Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp)) If Not IsEmpty(c) Then 'If c.Value <> "" Then Sheets("Sheet1").Range("G1").Value = c.Value '★ DoEvents '念のため Sheets("Sheet1").PrintPreview 'PrintOut End If Next
End Sub
空欄が、本当の空欄ではなく、式で "" といったものが入っている見かけ上の空欄であれば 'If c.Value <> "" Then のほうを使ってください。
(β) 2015/06/30(火) 11:04
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.