【VBA】高速化設定用チートシート クラス作成
どんなチートシート?
私が前から欲しいと思っていたチートシートです。
コピペしてサボれるソースをWeb上に置いておきたくて作りました。
これがあれば、過去の私やそれに近しい人がハッピーになれます。
そもそも
Excelのマクロの高速化には下記のようなテクニックが大切です。
その中で、この設定をしておけば早いという項目がいくつかあります。
その設定をコード内の各所で切り替えると、設定の戻し忘れが発生しやすいです。
ユーザー視点から見て、それは怖いので防止策としてクラスを作成しました。
GitHubに上げようかと思ったのですが、コピペで十分なレベルだったため、
サボってQiitaに直接貼っておきます。
使い方
大前提として、Selection
や「1セルごと書き込みの繰り返し」など、
無駄な処理が消込されていることを確認してください。
まずは下記のクラス内の記述を基にして、クラスを作成します。
その後、このようにToFastEnvironment
とToDefault
で重い処理を挟みます。
Public Sub HeavyMethod()
Dim MyConfig As FastConfig
MyConfig.ToFastEnvironment("いまとても頑張ってるよ!!")
'重い処理 Heavy Process...
Call MyConfig.ToDefault
End Sub
クラス内の記述
FastConfig.cls
Public Sub ToDefault()
With Application
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
.Calculation = Excel.XlCalculation.xlCalculationAutomatic
.StatusBar = False
End With
End Sub
Public Sub ToFastEnvironment(message As String)
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
.Calculation = Excel.XlCalculation.xlCalculationManual
.StatusBar = message
End With
End Sub
Private Sub Class_Terminate()
Call ToDefault
End Sub
コード解説
- ToDefault
- このプロシージャで通常の環境に戻せます。
- ToFastEnvironment
- このプロシージャで高速環境が実現できます。
- Class_Terminate
- インスタンスオブジェクトが消滅するときに通常の環境に戻します。
- ScreenUpdating
- これで画面の更新をオフにしてExcelの表示をフリーズできます。
- EnableEvents
- これでWorksheet内などで発生するイベントの多重発生を防ぐことができます。
- 特にセル入力に対してインテリセンス的な処理を行うときに便利です。
- DisplayAlerts
- これで「本当に消しますか?」系のメッセージをオフにできます。
- Calculation
- これでセル内の計算の自動実行をオフにしてCPU負荷を減らせます。
- StatusBar
- Excelのステータスバー(ウィンドウの一番下の細いところ)にメッセージが表示できます。
関連先輩記事
Public Sub ToDefault()
With Application
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
.Calculation = Excel.XlCalculation.xlCalculationAutomatic
.StatusBar = False
End With
End Sub
Public Sub ToFastEnvironment(message As String)
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
.Calculation = Excel.XlCalculation.xlCalculationManual
.StatusBar = message
End With
End Sub
Private Sub Class_Terminate()
Call ToDefault
End Sub
- このプロシージャで通常の環境に戻せます。
- このプロシージャで高速環境が実現できます。
- インスタンスオブジェクトが消滅するときに通常の環境に戻します。
- これで画面の更新をオフにしてExcelの表示をフリーズできます。
- これでWorksheet内などで発生するイベントの多重発生を防ぐことができます。
- 特にセル入力に対してインテリセンス的な処理を行うときに便利です。
- これで「本当に消しますか?」系のメッセージをオフにできます。
- これでセル内の計算の自動実行をオフにしてCPU負荷を減らせます。
- Excelのステータスバー(ウィンドウの一番下の細いところ)にメッセージが表示できます。
ファンタグレープうめえ
ExcelVBAを高速化する方法
VBA(Excel)高速化対策 -配列化編-
Excel VBA 高速化における基本設定構文
VBA(Excel)高速化対策 -描画処理無効化編-
VBA 二次元配列を使ってシートに高速で書き込む
まとめ
過去数年間の自分よ!これでラクをしてくれ!
それでは、みなさん、また来週!
コピペでステキなサボりライフを!
Excelsior!
Author And Source
この問題について(【VBA】高速化設定用チートシート クラス作成), 我々は、より多くの情報をここで見つけました https://qiita.com/ShortArrow/items/c3eefbedae8aa9787614著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .