• ベストアンサー

Excelダイアログボックスのボタン命令

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 メソッドが失敗しました。 どう修正したらよいのか教えて下さい。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 コード的には、間違ないと思います。 一応、このようにはしてみましたが、エラーは発生します。 With Sheets("Sheet1") .Select   .PageSetup.PrintArea = .Range("A3:G12").Address   .PrintOut Copies:=1 調べてみると、ダイアログシートで作った、カスタムダイアログボックスが、表示されているときは、PrintOut が使えないようです。以下は、機械翻訳ですが、意味は分かると思います。 ただ、この程度ですと、たぶん、カスタムダイアログボックスではなくて、メッセージボックスでも事は足りるような気がします。そうでなければ、やむをえないのですが、UserFormに、そろそろ切り替えることをお勧めします。 カスタム ダイアログ ボックスが表示されるとき、 PrintOut メソッドは使用できません。 http://support.microsoft.com/kb/213598/ja

awazo
質問者

お礼

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

その他の回答 (1)

  • Nayuta_X
  • ベストアンサー率46% (240/511)
回答No.1

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-VBA/vba_page21.htm 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

awazo
質問者

お礼

Nayuta_Xさん ありがとうございました。 ?http://excelvba.pc-users.net/? ?http://www.tsucchy.com/Excel/index_e.html?             参考になります。

関連するQ&A