Excel マクロ VBA の 高速化

Excelの広場

Excel VBA を高速化するマクロを紹介します。

このまま、コピペ して使って頂ければ OK です。

Max
マクロ とか VBA に関して?な方は、

下記記事をお読みくださいだワン!

【高速化 マクロ】

Property Let Speeding_up (ByVal flag As Boolean) '画面切替、イベント抑制、計算モード切替

With Application
.EnableEvents = Not flag
.ScreenUpdating = Not flag
.Calculation = IIf(flag, xlCalculationManual, xlCalculationAutomatic)
End With

End Property

この VBA コードは、オブジェクト の
プロパティー を操作しています。

操作しているのは、

  1. イベント発生(VBAを実行する指令)の プロパティー Enable を 有効にするか/しないか。
  2. 画面の更新 を するか/しないか。
  3. 計算を 手動にするか/自動にするか。

上記 3つです。。

VBA 処理を速くするには、

  • イベント発生 ⇒ 無効
  • 画面更新 ⇒ 無効
  • 計算 ⇒ 手動

で、元の状態(Excelをいつも使う状態)に戻すには、その逆で..

  • イベント発生 ⇒ 有効
  • 画面更新 ⇒ 有効
  • 計算 ⇒ 自動

に、する必要があります。

使い方は、

Speeding_up (変数)を
True にすれば、 高速化

Speeding_up (変数)を
False にすれば、 にもどります。

VBA  高速化 コードの説明

プロパティー を操作するので、プロパティープロシージャ を使っています。

変数は 、Speeding_up です。

データー型は、Boolean
True(真)、Fause(偽 )です。

With から End With に挟まれているアプリケーションのプロパティーを操作します。

Speeding_up 変数を True 【VBA を高速化】

「イベント発生」の 操作

.EnableEvents = Not flag

Not flag なので 無効 になります。

「画面変更 」の操作

.ScreenUpdating = Not flag

Not flag なので 無効 になります。

「計算 」の 切替操作

.Calculation = IIf(flag, xlCalculationManual, xlCalculationAutomatic)

True に すると 最初に
書かれている手動 になります。

Speeding_up 変数を False 【元に戻す。】

「イベント発生」の 操作

.EnableEvents = Not flag

Not flag なので 有効 になります。

「画面変更 」の操作

.ScreenUpdating = Not flag

Not flag なので 有効 になります。

「計算 」の 切替操作

.Calculation = IIf(flag, xlCalculationManual, xlCalculationAutomatic)

False に すると 二番目 に、
書かれている自動 になります。

 

 

 

スポンサーリンク

-Excel の広場

Copyright© ドングリ爺のblog , 2021 All Rights Reserved Powered by AFFINGER5.