「一気に最後まで読んだ」本、教えて下さい!

VBAの初心者です。

Excelでダイアログボックスを作りました。ボタンを押したとき、ワークシートの選択した範囲の印刷をさせたいと思っています。

ダイアログボックスのボタンに「ボタン2_Click」と名付けた下記のマクロを登録しました。

Sub ボタン2_Click()
With DialogSheets(1)
Sheets("Sheet1").Select
Range("A3:G12").Select
Selection.PrintOut Copies:=1, Collate:=True
Range("A13:G18").Select
Selection.PrintOut Copies:=1, Collate:=True
Range("K18").Select
End With
End Sub

「ボタン2_Click」マクロは、直接実行すれば希望どおり印刷できます。
しかし、ダイアログボックスのボタンを押した場合には、Range("A3:G12").Selectまで実行しますが、そのあと次のメッセージが出て動きません。

実行時エラー'1004':
Range クラスの PrintOut メソッドが失敗しました。

どう修正したらよいのか教えて下さい。よろしくお願いします。

A 回答 (2件)

こんばんは。



コード的には、間違ないと思います。

一応、このようにはしてみましたが、エラーは発生します。
With Sheets("Sheet1")
.Select
  .PageSetup.PrintArea = .Range("A3:G12").Address
  .PrintOut Copies:=1

調べてみると、ダイアログシートで作った、カスタムダイアログボックスが、表示されているときは、PrintOut が使えないようです。以下は、機械翻訳ですが、意味は分かると思います。

ただ、この程度ですと、たぶん、カスタムダイアログボックスではなくて、メッセージボックスでも事は足りるような気がします。そうでなければ、やむをえないのですが、UserFormに、そろそろ切り替えることをお勧めします。

カスタム ダイアログ ボックスが表示されるとき、 PrintOut メソッドは使用できません。
http://support.microsoft.com/kb/213598/ja
    • good
    • 0
この回答へのお礼

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

?http://support.microsoft.com/kb/213598/ja? MS文書番号 : 213598
が参考になりました。
しかし、最終更新日 : 2007年1月24日 と新しい割にはたいそう立派な翻訳で、MSさんもいろいろ大変なようです、呵々。

またよろしくお願いします。

お礼日時:2007/06/13 09:16

With DialogSheets(1) でなく



With DialogSheets
ですね。

With DialogSheets(1)
とすると、実行時エラー "9" となります。

実行時エラー'1004':
は、印刷出来るものが、ないから(白紙だから)かと思います。

この場合エラー処理をするか
白紙の有無を調査して
白紙の場合は、コピーしないように 処理する必要があります。

エラー処理の詳細は、下記URL
http://www.moug.net/tech/exvba/0150090.htm

または、
http://t_shun.at.infoseek.co.jp/My_Page/Excel-VB …

VBA 初心者なら
Excel VBA 入門講座へようこそ!!
http://excelvba.pc-users.net/

Excel VBA入門
http://www.tsucchy.com/Excel/index_e.html を参照

ダウンロードして動作体験 
http://www.sanynet.ne.jp/~awa/excelvba/kouza.html
    • good
    • 0
この回答へのお礼

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

?http://excelvba.pc-users.net/?
?http://www.tsucchy.com/Excel/index_e.html?

            参考になります。

お礼日時:2007/06/13 09:18

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