- ベストアンサー
ExcelでVBAを使い印刷したいのですが、条件が・・・
お世話になります。 VBAを使い印刷をしたいのですが、条件でどうしても分からず、どなたか回答を宜しくお願い致します。 その条件とはデータが入力されている最終行プラス5行(空白)で印刷をしたいのですが、UserRange.RowsCount+5でいろいろ試みましたが、そもそもコレだと列が最終列まで指定してしまい、とんでもない目に会いました。印刷範囲の設定で列は変えずに行をプラス5(下)にという感じです。 どなたか分かるかた是非宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
もし列が可変であるなら、以下のような方法でもできます。 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 'アクティブシートの指定された印刷範囲を印刷
その他の回答 (3)
- ki-aaa
- ベストアンサー率49% (105/213)
#2です。 式が間違っていました。 Range(A2 & ":M" & lastrow).Select ↓ Range("A2:M" & lastrow).Select 申し訳ありませんでした。
お礼
2度もありがとうございます。 #3の方のを使用させてもらいました。 しかしこの式もメモ帳にとっておき何かの時に参照します。 本当にありがとうございます。
- ki-aaa
- ベストアンサー率49% (105/213)
補足を見て Rows(2 & ":" & lastrow).Select これだと、列の最後まで指定してしまいます。 Rangeをつかったらどうなります。 Range(A2 & ":M" & lastrow).Select ":M"を必要な所に変えてください。でわ
- wildcard
- ベストアンサー率54% (54/100)
症状としては、印刷範囲が行単位(1行目~20行目のように)で設定されてしまうと言う事でしょうか? それなら印刷範囲をセル単位にすればOKですとしか言えません。 と言うのも、どのような処理を記述されているかが全く分からないので…。 問題のあるコード(この場合、印刷範囲指定と、それに関わる部分)の一部でも補足して頂ければ、解決策も色々出るかと思います。
補足
説明不足でした。 2点分からない所があります。 lastrow = Sheets("sheet1").UsedRange.Rows.Count + 5 Rows(2 & ":" & lastrow).Select ここでRowsなので列で選択してしまいます。 またこの後、 上記で選択した範囲を印刷する方法が分かりません。 最終行はどんどん増えていきます。 どうぞ宜しくお願い致します。
お礼
ありがとうございます。 本当に助かりました。 この前の処理で列の非表示を何箇所かしていたのですが、 まったく問題無く範囲を選択できました。 また次の印刷範囲の設定も助かりました。 本当にありがとうございます。