30行目のE列に文字が入っているときに、30行目まで印刷する、60行目のE列に文字が入っているときは60行目まで印刷する、というVBAはどのよに記述したらよいでしょうか。
PrintOutメソッドを使用すればEXCELの通常印刷と同様にデータの設定された
範囲だけが印字されると思いますがそれではダメなのでしょうか?
http://www.moug.net/tech/exvba/0070011.htm
罫線など印刷されるデータがシート内にあるのであればCellsプロパティで
有効データの範囲を取得し、PrintAreaプロパティに設定すれば印刷範囲を指定できます。
Range("E1").Select
ActiveCell.SpecialCells(xlLastCell).Select
ActiveSheet.PageSetup.PrintArea = "$E$1:" & ActiveCell.Address
とすればいいでしょう。
http://homepage1.nifty.com/tabotabo/insat/excelp/excelp04.htm
http://www.officetanaka.net/excel/vba/sheet/sheet08.htm
あ、印刷するってのが 入ってませんでした。
先ほどのソースに 以下を 加えてください。
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
質問文をそのまま解釈してみました。
E列を30行毎にチェックをし、30行単位で最後に文字が入っていた行まで
印刷を行うのであれば、以下のようになります。
Dim i As Long i = 1 Do If Cells(i * 30, 5) = "" Then Exit Do i = i + 1 Loop If i > 1 Then ActiveSheet.PageSetup.PrintArea = "$1:$" & (i - 1) * 30 ActiveWindow.SelectedSheets.PrintOut Copies:=1 End If
注意点
(前回の質問を見て...)30行毎ではなく、単にE列で一番最後にデータが
入力された行まで印刷するのであれば、以下の記述のみでOKです。
ActiveSheet.PageSetup.PrintArea = "$1:$" & Range("E65536").End(xlUp).Row ActiveWindow.SelectedSheets.PrintOut Copies:=1
■印刷範囲を設定する(PrintAreaプロパティ)
ありがとうございます
説明が不十分だったのですが、雛形になるデータは500行くらいあります。
その中の、E30,E60に文字列が入っているときという場合で考えております。
と、いまさらいっても、takntさんから2回答もらってしまった。
どうしよう。