エクセルVBAの質問です。

30行目のE列に文字が入っているときに、30行目まで印刷する、60行目のE列に文字が入っているときは60行目まで印刷する、というVBAはどのよに記述したらよいでしょうか。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2006/06/02 11:23:49
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:ota2244 No.1

回答回数77ベストアンサー獲得回数4

ポイント18pt

PrintOutメソッドを使用すればEXCELの通常印刷と同様にデータの設定された

範囲だけが印字されると思いますがそれではダメなのでしょうか?

http://www.moug.net/tech/exvba/0070011.htm

罫線など印刷されるデータがシート内にあるのであればCellsプロパティで

有効データの範囲を取得し、PrintAreaプロパティに設定すれば印刷範囲を指定できます。

id:taknt No.2

回答回数13539ベストアンサー獲得回数1198

ポイント23pt

Range("E1").Select

ActiveCell.SpecialCells(xlLastCell).Select

ActiveSheet.PageSetup.PrintArea = "$E$1:" & ActiveCell.Address

とすればいいでしょう。

http://homepage1.nifty.com/tabotabo/insat/excelp/excelp04.htm

id:taknt No.3

回答回数13539ベストアンサー獲得回数1198

ポイント22pt

http://www.officetanaka.net/excel/vba/sheet/sheet08.htm

あ、印刷するってのが 入ってませんでした。

先ほどのソースに 以下を 加えてください。

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

id:izunagonago

ありがとうございます

説明が不十分だったのですが、雛形になるデータは500行くらいあります。

その中の、E30,E60に文字列が入っているときという場合で考えております。

と、いまさらいっても、takntさんから2回答もらってしまった。

どうしよう。

2006/06/02 11:11:56
id:gong1971 No.4

回答回数451ベストアンサー獲得回数70

ポイント27pt

質問文をそのまま解釈してみました。

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

注意点

  • E列以外のデータはチェックしていません
  • E30, E60, E90 ...と30行毎のデータのみチェックしています


(前回の質問を見て...)30行毎ではなく、単にE列で一番最後にデータが

入力された行まで印刷するのであれば、以下の記述のみでOKです。

ActiveSheet.PageSetup.PrintArea = "$1:$" & Range("E65536").End(xlUp).Row
ActiveWindow.SelectedSheets.PrintOut Copies:=1

■印刷範囲を設定する(PrintAreaプロパティ)

http://www.moug.net/tech/exvba/0070011.htm

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません