- ベストアンサー
Excel VBA(マクロ)処理中の画面に”お待ち下さい”を表示させたい。
Excel2002で帳票印刷の処理を作成しました。 該当ブック(自身.xls)オープンすると最初にVBAにより帳票レイアウトの初期化を行います。(原紙.xlsをオープンし、自身のシートに貼り付けます。)この初期化の貼り付け処理が"原紙"と"自身"のシートを交互にアクティブにしている為、画面がちらついて、とても見苦しい状態です。 Sub 帳票初期化() Workbook.Open Filename="F:\原紙.xls" Sheets("帳票1").Select Cells.Select Selection.Copy Windows("自身.xls").Activate Sheets("帳票1").Select Cells.Select ActiveSheet.Paste Windows("原紙.xls").Activate Sheets("帳票2").Select Cells.Select Selection.Copy ・・・・・・・・・(以下同様処理を8帳票程) Windows("原紙.xls").Activate ActiveWindow.Close Windows("自身.xls").Activate End Sub (動作確認済み。手打鍵にて誤コマンドご容赦) この処理を”お待ち下さい”画面等で実行中だけ見えない状態にする、又は画面より見えない形で行うにはどうすれば良いでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
画面がちらつくのを防ぐのにはこの構文が有効です。 Application.ScreenUpdating = False 多くの画面切り替えが発生する場合に、 その画面更新を抑止します。 解除する場合は明示的にtrueをセットするか、 マクロ実行終了後にリセットされます。 若干ですが処理速度も向上しますよ。
その他の回答 (2)
- at121
- ベストアンサー率41% (85/206)
セルのコピーでなく シートのコピーはいかが? Sub 原紙を8枚複写() 帳票file名 = "原紙" 複写枚数 = 8 Workbooks.Open Filename:=帳票file名 Workbooks(2).Sheets(1).Copy Before:=Workbooks(1).Sheets(1) Workbooks(2).Close (False) Workbooks(1).Sheets(1).Name = "帳票1" For 枚数 = 2 To 複写枚数 Sheets(1).Copy Before:=Sheets(1) Sheets(1).Name = "帳票" + CStr(枚数) Next End Sub
お礼
回答有難うございます。 今回は貼り付け処理は既に確定している所で、勝手に変更をかけれないのです。 次回新規で作成する際に組み込ませて頂きたいと思います。
- kouzi_kouji
- ベストアンサー率32% (67/205)
>画面より見えない形で行うにはどうすれば? 次の一行で、画面の更新を表示しないで、実行します。 Application.ScreenUpdating = False 但し、終わって表示したい場合は、次の1行を入れて、表示出来るように、戻して下さい。 Application.ScreenUpdating = True
お礼
回答有難うございました。 使用させていただきました。
お礼
スクリーンとかScreenで検索しては何故か空振りしていました。 思う様な処理(対策)が行えました。有難うございました。