• ベストアンサー

ExcelでVBAを使い印刷したいのですが、条件が・・・

お世話になります。 VBAを使い印刷をしたいのですが、条件でどうしても分からず、どなたか回答を宜しくお願い致します。 その条件とはデータが入力されている最終行プラス5行(空白)で印刷をしたいのですが、UserRange.RowsCount+5でいろいろ試みましたが、そもそもコレだと列が最終列まで指定してしまい、とんでもない目に会いました。印刷範囲の設定で列は変えずに行をプラス5(下)にという感じです。 どなたか分かるかた是非宜しくお願い致します。

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

  • ベストアンサー
  • wildcard
  • ベストアンサー率54% (54/100)
回答No.3

もし列が可変であるなら、以下のような方法でもできます。   lastrow = Sheets("sheet1").UsedRange.Rows.Count + 5 '使用している行の最後の行番号数+5   lastcolumn = Sheets("sheet1").UsedRange.Columns.Count '使用している列の最後の列番号   ActiveSheet.PageSetup.PrintArea = _     Range(Cells(2, 1), Cells(lastrow, lastcolumn)).Address '印刷範囲の設定   ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True 'アクティブシートの指定された印刷範囲を印刷

aieeen
質問者

お礼

ありがとうございます。 本当に助かりました。 この前の処理で列の非表示を何箇所かしていたのですが、 まったく問題無く範囲を選択できました。 また次の印刷範囲の設定も助かりました。 本当にありがとうございます。

その他の回答 (3)

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.4

#2です。 式が間違っていました。 Range(A2 & ":M" & lastrow).Select  ↓ Range("A2:M" & lastrow).Select 申し訳ありませんでした。

aieeen
質問者

お礼

2度もありがとうございます。 #3の方のを使用させてもらいました。 しかしこの式もメモ帳にとっておき何かの時に参照します。 本当にありがとうございます。

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.2

補足を見て Rows(2 & ":" & lastrow).Select これだと、列の最後まで指定してしまいます。 Rangeをつかったらどうなります。 Range(A2 & ":M" & lastrow).Select ":M"を必要な所に変えてください。でわ

  • wildcard
  • ベストアンサー率54% (54/100)
回答No.1

症状としては、印刷範囲が行単位(1行目~20行目のように)で設定されてしまうと言う事でしょうか? それなら印刷範囲をセル単位にすればOKですとしか言えません。 と言うのも、どのような処理を記述されているかが全く分からないので…。 問題のあるコード(この場合、印刷範囲指定と、それに関わる部分)の一部でも補足して頂ければ、解決策も色々出るかと思います。

aieeen
質問者

補足

説明不足でした。 2点分からない所があります。 lastrow = Sheets("sheet1").UsedRange.Rows.Count + 5 Rows(2 & ":" & lastrow).Select ここでRowsなので列で選択してしまいます。 またこの後、 上記で選択した範囲を印刷する方法が分かりません。 最終行はどんどん増えていきます。 どうぞ宜しくお願い致します。

関連するQ&A