ラクラクプログラミング

どんなに複雑で時間がかかる作業も必ず自動化できます

デモ版Excelマクロの作成方法

処理速度を優先した実用版Excelマクロの作成方法については、

Excelマクロガイド(セル操作)』で、説明しています。

今回は、敢えてゆっくりと処理が完了するように動きを見せることを

優先したデモ版Excelマクロの作成方法を紹介します。

1.Selectを多用する

 (1) ワークブックやワークシートのSelectを多用する

f:id:qsuguru:20211220000639j:plain

  上記のようなワークブックやワークシートのアクティブ化セレクト

 多用すればするほど、Excelマクロは処理が遅くなるため、

 デモ版ExcelマクロではワークブックやワークシートのSelect

 敢えてたくさん使用しています。

  逆に、上記のようなワークブックやワークシートのアクティブ化とセレクト

 使用しなければ、Excelマクロは処理が速くなるため、

 実用版ExcelマクロではワークブックやワークシートのSelectを使用しません。 

 (2) レンジのSelectを多用する

  例えば、あるセル領域を囲む罫線の種類として実線を指定するとき、

 実用版Excelマクロでは、下記のようにSelectを使用することなく、

 セルを囲む罫線の種類として実線を直接指定します。

f:id:qsuguru:20211220000802j:plain

  逆に、デモ版Excelマクロでは敢えて処理を遅くするため、

 下記のように、一旦セル領域をセレクトしてから

 セレクト領域を囲む罫線の種類として実線を指定します。

f:id:qsuguru:20211220000823j:plain

  Selectを多用すれば、処理は遅くなるのですが、

 それでも処理時間の遅延が短すぎて、

 デモ版ExcelマクロとしてExcel操作を表示するには、不十分です。

 

2.DoEventsで一定時間VBAの処理を離れExcelの操作を行う

  そこで、DoEventsの登場です。

f:id:qsuguru:20211221160905j:plain

  DoEventsは、一定時間、VBAの処理を離れ、

 Excelの操作を行います。

  DoEventsVBAの処理とExcelの操作を平行して進めたいときに

 有効なメソッドとなります。

 

  下記のように、引数の時間だけVBAの処理を一時停止し、

 その時間にExcelの操作を実行するサブプロシージャをつくります。

f:id:qsuguru:20211221160937j:plain

 

f:id:qsuguru:20211221172611j:plain

  例えば、上記のように、  

 行のループ処理でXSheetのセルの値をYSheetのセルに代入するときは、

 引数に0.1秒を設定してサブプロシージャー『PauseTime_Wait』を

 呼び出すことで、

 VBAの処理を0.1秒一時停止し、その0.1秒間にExcel操作の画面表示を

 実行できるようになります。

  このように、DoEventsを使えば、VBAの処理とExcelの操作を

 平行して進めることができることに加え、一時停止時間を自由に

 つくりだすことができます。

 

  このSelectDoEventsを組み合わせれば、

 1秒の実用版Excelマクロを45秒のデモ版Excelマクロに

 改修することもできます。