- 締切済み
エクセル、変動する印刷範囲の設定
変動するデータを自動的に範囲設定して印刷したいです。 エクセル2007を使用しています。 sheet1を元データとして、sheet2で元データの必要項目だけ選んで表を作成しています。 sheet2は5000行×15列の表で罫線も引いてます。 元データは毎回変動するので、データの入っているところだけ自動的に印刷できるようにしたいです。 行数が毎回変動します。列は15列で固定ですが、印刷は12列迄で固定です。 すいませんが、教えてください。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- hige_082
- ベストアンサー率50% (379/747)
クリアするとエラー出ますね 対処してみました こちらも一つ分からないことがあるので、補足願います 最終行に必ずデータの入る列はどの列になりますか? 現在は、A列の最終行を印刷の最終行としています 宜しくお願いします Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Long For rng = 5000 To 1 Step -1 If Cells(rng, 1).Value <> "" Then Exit For Next rng If rng = 0 Then Exit Sub ActiveSheet.PageSetup.PrintArea = "$A$1:$L$" & rng End Sub
- hige_082
- ベストアンサー率50% (379/747)
#2、#3です 関数では無理みたい マクロでよいなら 印刷シートのシートタブを右クリック 一番下の「コードの表示」を選択 出てきた画面に下のコードをコピペ 出ている画面を閉じて、シートに戻り 試してみて Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Long For rng = 5000 To 1 Step -1 If Cells(rng, 1).Value <> "" Then Exit For Next rng ActiveSheet.PageSetup.PrintArea = "$A$1:$L$" & rng End Sub
お礼
お返事遅くなってすいません。 1回目はちゃんと元データの最終行(例えは1000行)まで 印刷範囲ができたのですが、 次に元データをクリアにしてから別のデータ(例えば2000行)を 貼り付けたら、 印刷範囲は1回目のデータまでしか(1000行)、 できません。。。 なぜでしょうか。 すいません。。。もし、もう少しわがままに付き合っていただけるなら、教えてください。
- hige_082
- ベストアンサー率50% (379/747)
#2です >式を入れているせいでしょうか・・・。 その通りです この方法は、A列の値、数式などを入力されたセルを数えて その数だけ印刷行を設定するものなので これもダメかな? =INDIRECT("A1:L"&COUNTIF(A:A,"*?")+COUNT(A:A)) 試してみてください
お礼
回答ありがとうございます。 試してみましたが、 ダメでした。。。 でも、回答頂きほんとに ありがとうございます。
- hige_082
- ベストアンサー率50% (379/747)
2007も同じだと思うので 名前の定義の名前に「Print_Area」を入力 参照設定に次の式を入力 =INDIRECT("A"&COUNTA(A:A)):L1 ここで一度OKで閉じる データがあるにもかかわらず、印刷領域に入っていない行を数えて 先ほどの式を修正 例えば5行なら =INDIRECT("A"&COUNTA(A:A)+5):L1 と変更します ダメなら、パスして
お礼
回答ありがとうございます。 やってみましたが、 行がデータによって印刷領域が変動しないです・・・。 5000行まで印刷範囲になってます・・・。 A列も元データが入力されていれば繁栄するように 式を入れているせいでしょうか・・・。
- marbin
- ベストアンサー率27% (636/2290)
VBAで設定するしかないと思います。
お礼
回答ありがとうございます。 VBAはまだまだ勉強不足です。 一度しっかり勉強してみようと思います。
お礼
お返事遅くなってしまい、すいませんでした。 上の内容でトライしてみましたが、 上手くいきませんでした。 でも、いろいろと調べてみたら、 A列~L列の印刷範囲設定とオートフィルタを 組み合わせたらできました。 フィルタの選択作業は増えますが これで進めてみようと思います。 今までわがままに付き合っていただき ほんとにありがとうございました。
補足
A列で大丈夫です。 明日、トライしてみます!