• ベストアンサー

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 (動作確認済み。手打鍵にて誤コマンドご容赦) この処理を”お待ち下さい”画面等で実行中だけ見えない状態にする、又は画面より見えない形で行うにはどうすれば良いでしょうか。

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

  • ベストアンサー
回答No.1

画面がちらつくのを防ぐのにはこの構文が有効です。 Application.ScreenUpdating = False 多くの画面切り替えが発生する場合に、 その画面更新を抑止します。 解除する場合は明示的にtrueをセットするか、 マクロ実行終了後にリセットされます。 若干ですが処理速度も向上しますよ。

Adenau
質問者

お礼

 スクリーンとかScreenで検索しては何故か空振りしていました。 思う様な処理(対策)が行えました。有難うございました。

その他の回答 (2)

  • at121
  • ベストアンサー率41% (85/206)
回答No.3

セルのコピーでなく シートのコピーはいかが? 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

Adenau
質問者

お礼

 回答有難うございます。 今回は貼り付け処理は既に確定している所で、勝手に変更をかけれないのです。 次回新規で作成する際に組み込ませて頂きたいと思います。

回答No.2

>画面より見えない形で行うにはどうすれば?  次の一行で、画面の更新を表示しないで、実行します。 Application.ScreenUpdating = False  但し、終わって表示したい場合は、次の1行を入れて、表示出来るように、戻して下さい。 Application.ScreenUpdating = True

Adenau
質問者

お礼

回答有難うございました。 使用させていただきました。