• ベストアンサー

VBAで困っています・・・

エクセル2003なのですがユーザーフォームにコマンドボタンをおき クリックすると印刷プレビューが表示され印刷設定をしてから印刷という流れにしようと思っていたのですが、ボタンをクリックすると印刷プレビューが表示された状態のまま、操作不能になりました・・・。 ActiveWindow.SelectedSheets.PrintPreview と記述しただけなのです、どう対処すればいいかわからないので、 対処法や記述の補足または記述の間違いの指摘など教えていただけないでしょうか? お願いします。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.4

kuma_rider氏へ UserFormの表示の仕方により回避可能です VBAのプロシージャから UserForm1.Show vbModeless といった具合で表示すれば ユーザーフォームはモーダルでは無くなるのでExcel本体側の操作も可能になります

lucky_777
質問者

お礼

回答ありがとうございます。 簡潔ながら大変、参考になりました。 また、機会がありましたらよろしくお願いします。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

質問どおりUserForm1にコマンドボタンを1つ張り付け、キャプションを「印刷プレビュー」とする。 Userform1のプロパティで ShowModalという項目がある。このところをFalseに設定する。 これで立ち上がりがVbModelessで立ち上がる。 Private Sub CommandButton1_Click() ActiveWindow.SelectedSheets.PrintPreview End Sub これで 実行ー「Sub/ユーザーフォームの実行」をクリックすると UserForm1が現れ、その上の印刷プレビューと名づけたコマンドボタンをクリックすると 印刷、閉じる、などボタンをクリックするとその機能を実行することができる(ユーザーフォームは画面から消えないが) ーー VBAでユーザーフォームを巻き込んで、難しくなる仕組みを作る意味は(通常の操作でできるものなので)全く無いと思うが(あるとすれば、ガイダンスぐらいの機能かな)

lucky_777
質問者

お礼

回答ありがとうございます。 私、初心者で最初は説明を理解しきれなかったのですが、他の方々からの回答などと考えあわせることで理解できました。 いろいろ試してみたいので、これからも投稿する事が多いと思います。機会がありましたらよろしくお願いします。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.3

#1です。 ちょっと勘違いしてすみません。 また、勘違いでしたら、勘弁してください。 つぎでどうでしょう。 Private Sub CommandButton1_Click() UserForm1.Hide ActiveWindow.SelectedSheets.PrintPreview End Sub

lucky_777
質問者

お礼

回答ありがとうございます。 早速試してみたのですが、うまくいきませんでした。 私の試し方が悪かったのかもしれませんが、 いろいろな方に回答をいただきおかげさまで解決しました。 また、機会がありましたらよろしくお願いします。

回答No.2

おそらく、ユーザーフォーム上のボタンをおした瞬間、プレビュー画面が表示されるが、そこから先に操作ができなくなるのではないでしょうか?? EXCELでは、VBAによってユーザーフォームが表示されている間は、EXCELのほうの操作をすることができません。 そして、さらにユーザーフォームは印刷プレビューを表示して、それから印刷されるかキャンセルされるかの動作を待っている状態です。 そのため、いわば無限ループに陥っているような状態になっていると考えてよいかと思います。 動作させるためのボタンを、シート上に直接配置して動かしてみると、普通に動くと思います。 シートの上にも、ボタンなどは配置できるので、私個人的には、ユーザーフォームの使用はあまりお勧めしません。

lucky_777
質問者

お礼

まさしく言われるままの状態でした・・・・。 他にも方法があると思うのですが、いろいろ試しながらやってます。 試すにも知識がないのでくだらない質問が多いかと思うのですが、機会がありましたら、またご教授お願いします。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.1

Application.Dialogs(xlDialogPrint).Show のことですかね。

関連するQ&A

専門家に質問してみよう