• ベストアンサー

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/17068)
回答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

  • コマンドボタンの表示が

    エクセルでコマンドボタンにより印刷プレビューを表示して,閉じるを クリック後,他のコマンドボタンの表示がおかしくなります。 (コマンドボタンが拡大しています) 原因と解決方法を教えてくださると嬉しいです。 Private Sub CommandButton2_Click() ActiveWindow.SelectedSheets.PrintPreview End Sub

  • マクロで印刷ができません

    簡単な表を作成し、デザインモードでフォームコントロールでボタンを作成し、マクロの作成をしました。 印刷するためにボタンをクリックしても 印刷プレビューで画面が止まってしまいます。 ところがプレビュー画面を閉じると印刷が始まります。 何度やりかえてもマクロで最後まで印刷ができません。 記述は次のようになっています。 プリントも記述されているようなのですが・・・・ エクセル2007を使っています。 どなたか助けてください Sub ボタン3_Click() ' ' ボタン3_Click Macro ' ' ActiveSheet.Shapes("Button 3").Select Selection.Characters.Text = "ボタン 3" Range("B3:E12").Select ActiveSheet.PageSetup.PrintArea = "$B$3:$E$12" ActiveWindow.SelectedSheets.PrintPreview ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub

  • VBAで印刷プレビューを閉じる時に別シートに移動したい

    エクセルで、 (1)入力画面(シート1) (2)印刷用画面1(シート2) (3)印刷用画面2(シート3) と1つの入力シートから2つのシートへ値をリンクさせ 表示しているものを作りました。 入力画面に「印刷ボタン1」「印刷ボタン2」を作成し、 「印刷ボタン1」を押すと、(2)印刷用画面1の印刷プレビューを表示するように ボタン押下のイベントに Sheets(シート2).Select ActiveWindow.SelectedSheets.PrintPreview と記述して、印刷プレビューを表示するようにしました。 その後、印刷プレビュー画面にて「閉じる」を押したり、ESCを押すと、 シート2が表示されます。 これをシート1の入力画面に移動させたいんです。 印刷プレビューを閉じた後に入力画面に戻りたいのですが、 どうしたらよいのか分かりません。 「印刷プレビューが閉じた」というイベントを取得する方法が あるのかも調べきれず、どうしたらいいのか困っています。 解決する方法がありましたら教えて下さい。

  • excel vba 印刷部数設定

    excel 2002を使用しています。 マクロで印刷および印刷プレビューせずに、印刷部数を設定する方法を探しています。 ActiveWindow.SelectedSheets.PrintOut Copies:=1, Preview:=True  ではプレビューしてしまいます。 ActiveWindow.SelectedSheets.PrintOut Copies:=1  では印刷してしまいます。 印刷およびプレビューしない方法はないものなのでしょうか。 よろしくお願いします。

  • VBAエクセルにて印刷

    こんにちわ。教えてください。VBAでActiveXコントロールをクリック したのち、印刷のプレビューを表示したら、MegBoxメッセージを表示 させ ”はい””いいえ”を選択したいのですがうまくいきません。 ちなみに下記のプログラムです。 Private Sub 印刷_Click() ActiveWindow.SelectedSheets.PrintPreview Dim ans As Integer ans = MsgBox("印刷しますか?", vbInformation + vbYesNo, "確 認") Select Case ans Case vbYes Application.ActivePrinter = "Canon iR C3080/C3580 LIPSLX on Ne05:" ExecuteExcel4Macro "PRINT(2,1,1,1,,,,,,,,2,,,TRUE,,FALSE)" Case vbNo MsgBox "故障履歴印刷をキャンセルします。" End Select End Sub 以上なんですがプレビュー後に”印刷しますが”が聞いてきません。 どうすればいいですか?

  • エクセルVBA実行後にファイルを自動で閉じるVBA

    Sub 印刷() ' ' Macro1 Macro ' マクロ記録日 : 201X/X/X ユーザー名 : AAAA ' ' If MsgBox("実行する場合はOK、間違ってこのボタンをクリックした場合はキャンセルをクリックしてください。(日付確認後、印刷のこと。)", vbOKCancel) = vbCancel Then End End If 'A印刷 ChDir "L:\フォルダB\X\新規" Workbooks.Open Filename:="L:\フォルダB\X\新規\記録表\工程分析.xls" Sheets("毎日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("月曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("火曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("水曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("木曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("金曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("土曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("日曜日印刷").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ActiveWorkbook.Save ActiveWindow.Close あるエクセルファイルのボタンに上記のVBAが記入されています。 そのボタンを押すと「工程分析.xls」ファイルを呼び出し各シートを自動印刷して保存して閉じるVBAです。 質問ですがボタンの配置されたあるエクセルファイルの上記VBAの処理を全て完了した後に上書き保存を自動で実行し、自動であるエクセルファイルを閉じるVBAはどの様に追加すれば良いでしょうか?

  • [ExcelVBA] Application.Dialogs(xlDialogPrint).Show とユーザーフォームについて

    [環境] WinXpHomeSP2 Excel2002SP3 Excelのユーザーフォーム上にあるコマンドボタンをクリックすると、アクティブになっているシートを印刷するプログラムを作成しています。 印刷前に印刷ダイアログを表示し、プリンタの設定およびプレビューを可能にしたいため、 Application.Dialogs(xlDialogPrint).Show を使用しています。 ユーザーフォームはその直前でいったんHideし、上記コードの直後に再度Showしています。 表示された印刷ダイアログの「プレビュー」ボタンをクリックすると、Hideしたはずのユーザーフォームがプレビュー画面の前面に表示されてしまい、プレビュー画面、ユーザーフォーム画面のどちらのボタンも効かなくなって制御不能となってしまいます。 プレビューしてもユーザーフォームが立ち上がってこなくなる方法を教えてください。

  • エクセルVBAの不思議な挙動?

    エクセル2003です。 ThisWorkbookには以下の記述があります。 Private Sub Workbook_BeforePrint(Cancel As Boolean) If ActiveSheet.Name <> "Sheet1" Then Exit Sub If Range("A1").Value = "" Then MsgBox "A1が未入力です" Range("A1").Select Cancel = True End If Application.OnTime Now(), "ページ移動" End Sub 標準モジュールには以下の記述があります。 Sub ページ移動() Sheets("Sheet2").Select Range("A1").Select End Sub Sub プリント() ActiveWindow.SelectedSheets.PrintPreview End Sub これでSheet1を開いた状態でツールバーから印刷プレビュー指示をすると、A1セルが入力済みであればプレビュー画面を出し、プレビューを閉じればSheet2が表示されます。 ところが、同じ状態でツールバーからではなく、マクロ Sub プリント を実行すると、プレビュー画面にはなりますが、プレビューを閉じてもSheet1のままです。 なぜ、 Application.OnTime Now(), "ページ移動" が、有効にならないのでしょうか?

  • ユーザフォームのリストボックス

    お世話になります。 ユーザフォームのリストボックス内の下記2個のどちらかを選択し Private Sub UserForm_Initialize() ListBox1.AddItem ("印刷プレビュー") ListBox1.AddItem ("印刷") End Sub CommandButton1をクリックして Worksheets("Sheet1").PrintOut か Worksheets("Sheet1").PrintPreview を実行したいのですが どうやってリストボックスとコマンドボタンを 連動できるようにすればいいのでしょうか コマンドボタンのみだったら出来るのですが、 リストボックスを使うとうまくいきません。 ご教授よろしくお願いいたします。

  • エクセルのマクロで印刷プレビューを閉じる方法

    印刷プレビューをだすなら PrintPreviewでわかるのですが、表示されたプレビュー画面を、自分で「閉じる」または「印刷」ボタンを押さなくとも閉じるにはどう書けばいいのでしょうか?