一回も披露したことのない豆知識

表題のとうりなのですが・・・

VBAで例えば("A1:K2")という範囲と("A125:K244")という範囲を
1枚のA4紙に印刷したいのですが・・・

With Worksheets("A")
.PageSetup.PrintArea = "A1:K2,A125:K244"
.PrintPreview
End With
とすると

A1:K2の範囲とA125:K244の範囲が1枚ずつ2枚にわかれて印刷されてしまいます。

始めたばかりの素人で大変困っております。

ご教授お願いいたします。

A 回答 (4件)

用紙サイズによって、一枚では無理かもしれませんが、


印刷範囲をA1からK244に設定し、不必要な行を非表示とすれば可能です。

With Worksheets("sheet1")
.PageSetup.PrintArea = "A1:K244"

'///印刷範囲内で印刷したくない行を非表示にする
Rows("3:124").Select
Selection.EntireRow.Hidden = True
Range("M134").Select
'///ここまで

.PrintPreview
End With


印刷後に下記コード実行させて、再表示させることが必要ですけど。
Rows("3:124").Select
Selection.EntireRow.Hidden = False

Excel2007動作検証済み。
    • good
    • 0
この回答へのお礼

ありがとうございます。

助かりました。

セルを選択しようと考えずに印刷したくないところを表示しなければ
いいのですね。

これからも勉強させていただきます。

お礼日時:2009/04/11 18:36

印刷用のシートを1つ特別に決めて、そこに印刷するセル・セル範囲を、VBAで元の印刷するセル・セル範囲の値を見やすいように編集しつつ持って(値を代入し)きて、その印刷用のシートの「単一セル範囲」を印刷するようにしないとだめと思います。


改行・改ページしないで印刷するような(Range)PrintOutのような類似メッソドはエクセルVBAには無いと思います。
Sub test01()
With Worksheets("Sheet1")
.Range("A1:D1,A3:D3").PrintPreview
End With
End Sub
では2ページになってしまいます。
腹が立つ点だがやむをえない。
フォームなどにデータを編集して印刷する手も同じです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

印刷用のシートを1つ特別に決めて、そこに印刷するセル・セル範囲を、VBAで元の印刷するセル・セル範囲の値を見やすいように編集しつつ持って(値を代入し)きて、その印刷用のシートの「単一セル範囲」を印刷するようにしないとだめと思います。

やってみます。
なんか、どんどん重くなっていく感じで・・・
もっとうまい人がVBAを使えば軽くなりそうな気がします・・・

勉強します!!!

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

お礼日時:2009/04/13 11:19

すみません、No2で回答したtakachan7272です。



私が付け加えたコードで
Range("M134").Select は余計でしたね。
やり方は分かっていただいたようなので大丈夫だと思いますが・・・
    • good
    • 0
この回答へのお礼

わざわざ補足まで丁寧にありがとうございました。

Range("M134").Select の部分は自分のほうで勝手に省かせて
いただきました。

お礼日時:2009/04/13 11:14

回答を待つより、必要な部分だけ別のシートにコピーするか、リンク式で呼び出す方が早いと思います。

    • good
    • 0
この回答へのお礼

返信ありがとうございます。

今後も使っていくものでしたので・・・

お礼日時:2009/04/11 18:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!