Excel VBA を高速化するマクロを紹介します。
このまま、コピペ して使って頂ければ OK です。
下記記事をお読みくださいだワン!
-
目次
Excel マクロ・VBA・VBE ってなぁに?
Excelの広場 爺さんが感じた事なんじゃが、Excelの自動化の事を マクロ と読んだり、VBA と読んだり、VBE と言う言葉もでてきたり..ハッキリしていないので、Max や、説明してくれる ...
続きを見る
【高速化 マクロ】
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 コードは、オブジェクト の
プロパティー を操作しています。
操作しているのは、
- イベント発生(VBAを実行する指令)の プロパティー Enable を 有効にするか/しないか。
- 画面の更新 を するか/しないか。
- 計算を 手動にするか/自動にするか。
上記 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 に すると 二番目 に、
書かれている自動 になります。