[[20121105194631]] 『VBAで印刷範囲を指定』(VBA超初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAで印刷範囲を指定』(VBA超初心者)

どなたか教えてください。

以下のような、A1〜Z6まで罫線が引いてある横長い表があるとします。

    A   B   C   D   E  F   G    H   I   J  ・・・・

1 あ  い  う  え  お

2 あ  い  う  え  お

3 あ  い  う  え  お

4 あ  い  う  え  お

5 あ  い  う  え  お

6 あ  い  う  え  お

印刷したいのは、入力済みの「お」のE列まで(A1:E6)でいいのですが、
普通に印刷すると、A1:Z6まで無駄に印刷してしまいます。

シートによっては、以下のように入力済みのG列まで印刷するということも
あります。

    A   B   C   D   E  F   G    H   I   J  ・・・・

1 あ  い  う  え  お  か  き

2 あ  い  う  え  お  か  き

3 あ  い  う  え  お  か  き

4 あ  い  う  え  お  か  き

5 あ  い  う  え  お  か  き

6 あ  い  う  え  お  か  き

要するに、A1から入力済みの表の右下のセルまで範囲指定して印刷したいのです。

このようなことがVBAで可能なのでしょうか。

説明が下手ですいません。
VBAはつい最近はじめたばかりの超初心者です。

どうぞよろしくお願いいたします。


 よくわからないんだけど・・・

 仮にG列までしか値が入っていないとして、H列より右は空白だよね。
 なのに【Z列まで無駄に印刷される】??
 空白だから印刷されないよねぇ。何が印刷されてしまうの?

 (ぶらっと)

説明不足ですみません。

H列より右には、罫線で表が作ってあり、表の中のセルは空白という状況になります。


 もし、値がある列の1行目には必ず値がある(空白ではない)とすれば

 Sub Sample()
    Dim x As Long
    With ActiveSheet
        .PageSetup.PrintArea = ""
        x = .Cells(1, .Columns.Count).End(xlToLeft).Column
        .PageSetup.PrintArea = "$A$1:" & .Cells(6, x).Address
    End With
 End Sub

 (ぶらっと)

マクロ使うまでもない気もしますが、こういうことですか(マナ)

 Range("A1").CurrentRegion.PrintOut

 もしくは、マウスで印刷したい範囲を選択してから	
 Selection.PrintOut

(ぶらっと)さま。

ありがとうございます。

できました。

感動しました。

これから、本格的にVBAを勉強していこうと思っています。

本当にありがとうございました。

(マナ)さまも追記ありがとうございました。

(VBA超初心者)


 これって、表のデータが追加されたら入力されている分だけを印刷したいという事ですよね?
 VBAを使わなくても一般機能でできますよ。

 一度印刷設定していたのでしたら、数式→名前の管理の中に「Print_Area」という名前があると思います。
 これを選択し、下の参照範囲のところに

 =OFFSET(Sheet1!$A$1,,,COUNTA(Sheet1!$A:$A),COUNTA(Sheet1!$1:$1))

 (シート名は適宜変えてください。)

 これで、データが入力されているところだけ印刷されませんでしょうか?
 また、罫線の種類にこだわらなくて印刷時にだけ罫線があればいい、などという事でしたら

 罫線を全部削除し、ページレイアウト→ページ設定ダイアログ→シートタブ→枠線にチェック

 で、データが入っている最後のセルまで自動で罫線がつきます。

 (コナミ)

 To コナミさん

 なぁるほど!
 エクセルって、いろんなことができるんですねぇ。
 老骨にムチ打って、エクセルの勉強も、まじめに取り組むべきだなぁと反省。
 (といいながら、きっと三日坊主?)

 (ぶらっと)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.