質問: 2501 Then 'エラーを無視する Else MsgBox "エラー発生" End If Resume Exit_Here: End Sub ``` のようになっています。 なお、プレビュー方は、右側に位置を変えることが出来ています。 回答よろしくお願いします。
回答: 印刷ダイアログは、モーダルウィンドウとして開きますので、閉じるまでは、他の部分は操作できないし、コードも閉じるまでは次のコードが実行されません。フォームをダイアログモード(acDialog)で開いたときの同じ動作と考えてください。 つまり、'DoCmd.RunCommand acCmdPrint'の後のコードは、印刷ダイアログを閉じるまで実行されないということです。 方法としては、WinAPIのSetWindowsHookExを使って操作する方法があります。下記にサンプルがあります。 vbaでmsgboxの位置を指定 WinAPIでフックを使うことになりますので、かなりのスキルが必要です。 別案としては、フォームで印刷ダイアログと同様の機能を持ったものを自作するという方法もあります。 印刷範囲や部数を設定するぐらいでいいのなら、こちらの方が簡単でしょう。