高速化する方法をまとめてみました。今回は「プロパティ編」です。このエントリーで記載しているサンプルコードは説明のためにあえて冗長にしてる部分もあります。ご自分のマクロに適した形に読み替えてご覧ください┏○))使わない機能はオフにするマクロの実行中、不要な更新、再計算、イベントの発生を制御することによりパフォーマンスが改善します。これらの制御に難しいロジックは必要なく、オブジェクトのプロパティをちょろっと変えるだけです。簡単にできるので目的に応じて実装してください。シート表示切替などの処理があると、その処理毎に目紛しく画面が切り替わります。この目紛しい「画面の再描画」はメモリリソースを多く消費するそうで、処理が遅くなる大きな原因となります。ApplicationオブジェクトのScreenUpdatingプロパティは画面更新のON/OFFを切り替えるプロパティです。設定して画面更新をOFFにすることで所謂「ちらつき」を抑え処理を高速化できます。Application.DisplayStatusBarステータスバーは状態や進捗状況などの情報を表示する便利なモノなのですが、パフォーマンスの面からみるとその更新は制御した方がよさそうです。ApplicationオブジェクトのDisplayStatusBarプロパティはステータスバーの表示/非表示を切り替えられます。このプロパティにFalseを設定してステータスバーを非表示にすることで処理を高速化できます。True『あれ?Application.ScreenUpdatingで画面更新制御すればステータスバーの更新制御いらないんじゃね?』とか思われるかもしれませんが、Application.ScreenUpdatingプロパティではステータスバーの更新制御はできません。別途Application.DisplayStatusBarプロパティにFalseを設定してステータスバーを非表示にする必要があります。Application.Calculation既定ではシートの再計算は自動になっているため、シートに数式がある場合はセルが変更される度に再計算が行われ処理速度の低下に繋がります。ApplicationオブジェクトのCalculationプロパティはシートの再計算の自動/手動を切り替えられます。設定して計算方法を手動にすることで処理を高速化できます。設定してシートの再計算を再度有効にします。設定した時点でシートの再計算が実行されます。処理の途中で再計算が必要な場合は、最低限の範囲で再計算を行います。可能であれば計算範囲が一番狭いRangeオブジェクトの再計算が理想です。Worksheet.EnableCalculationシートの再計算を停止するもう1つの方法として、WorksheetオブジェクトのEnableCalculationプロパティがあります。このプロパティにFalseを設定するとシートの再計算が利用できなくなります。シートの再計算が停止されるのでパフォーマンスは向上しますが、明示的にCaluculateメソッドで再計算を要求しても再計算されないので注意が必要です。Application.EnableEventsプロジェクト内にWorkbookイベントやWorksheetイベントがあり、イベントのトリガーとなる処理がマクロにある場合はその都度イベントが発生して処理速度低下の原因となります。ApplicationオブジェクトのEnableEventsプロパティはイベント発生のON/OFFを切り替えられます。このプロパティにFalseを設定することでイベントの発生を停止し処理を高速化できます。Trueこのプロパティで制御できるのはWorkbookやWorksheetなどApplicationオブジェクトメンバーのイベントのみで、UserFormやそのコントロールイベントは対象となりませんのでご注意ください。印刷範囲をその都度再計算し直すため処理速度の低下に繋がります。WorksheetオブジェクトのDisplayPageBreaksプロパティは印刷範囲を示す区切り線(点線)の表示/非表示を切り替えます。このプロパティにFalseを設定することで印刷範囲の再計算を停止し、処理の高速化が期待できます。Trueなお、このプロパティはプリンターがセットアップされていない場合はエラーとなります。PivotTable.ManualUpdate何かしらのピボットテーブルの操作がある場合、Excelはテーブル全体に対して再計算を行うため処理速度低下の原因となります。PivotTable.ManualUpdateプロパティはピボットテーブルの再計算を自動/手動に切り替えられます。このプロパティにTrueを設定することでピボットテーブルの再計算を停止し処理を高速化できます。Falseなお、このプロパティはプログラム終了後に自動でFalse(自動再計算)に設定し直されます。Application.PrintCommunicationページ設定(PageSetupプロパティ)を変更する場合、プリンターとの通信が処理速度に影響します。ApplicationオブジェクトのPrintCommunicationプロパティはプリンターとの通信の有効/無効を切り替えられます。このプロパティにFalseを設定してプリンターとの通信を無効化することで処理を高速化できます。TrueApplication.PrintCommunicationにTrueを設定した時に変更したPageSetupプロパティがコミットされます。追加されたプロパティです。処理後は各プロパティを元に戻すのを忘れずに!一部を除き各プロパティは処理終了後も設定した値が保持されます。再計算を停止すれば自動で再計算されないままになってしまうし、画面更新を停止すると基本操作もままなりません(文章では説明しづらいですが、画面更新が停止のままだと悲惨です)。明示的に処理実行前の値を再設定する必要があります。実行前の状態は状況によって変わるので一度変数に退避しておき、実行後に退避した変数の値を設定しなおすのが良いかと思います。Subまとめ冒頭でも述べましたが、このエントリーでご紹介した方法はどれもプロパティを変えるだけで実現できる簡単なものばかりです。通常の変数は1つの変数に1つの値しか格納できませんが、配列を利用すれば一つの変数に同じデータ型の複数の値を格納することができます。通常ではできないユーザーフォーム上のコントロールをマウスでドラッグして移動する方法のご紹介です。ワークシート関数のSUM関数やMAX関数は可変の引数を渡すことができます。省略可能な引数を持つプロシージャを作成するにはOptionalキーワードを使用します。いうクラスが実装されています。ステートメントの2種類の「Mid」があります。この記事ではその違いと簡単な使い方を説明しています。コメントをキャンセルメールアドレスが公開されることはありません。Dev-Clips.。