目次:
- 画面更新をオフにする
- 自動計算をオフにする
- これらの厄介な警告メッセージを消去する
- オブジェクト参照を単純化する
- 変数に割り当てるデータのタイプについては、通常心配する必要はありません。 Excelは、あなたのためのすべての詳細を舞台裏で処理します。たとえば、MyVarという名前の変数がある場合、その変数に任意の数の型を割り当てることができます。手続きの後半でテキスト文字列を割り当てることさえできます。
- 次のコードではWith With End With:
ビデオ: MOS試験対策オンライン通信講座【Excel2013スペシャリスト】エクセル兄さんの最短スピードMOS合格コース 2024
VBA for Excel 2016は高速ですが、必ずしも十分速いとは限りません。 (コンピュータプログラムは決して高速ではありません)。マクロをスピードアップするために使用できるプログラミング例を見つけるために読んでください。
画面更新をオフにする
マクロを実行すると、マクロ内で発生するすべてのオンスクリーン操作を後で見ることができます。これを行うことは有益なことですが、マクロが正常に動作した後は、しばしば迷惑になり、マクロのパフォーマンスが大幅に低下する可能性があります。幸いにも、マクロを実行するときに通常発生する画面の更新を無効にすることができます。画面の更新を無効にするには、次の文を使用します。
<! - 1 - >アプリケーション。 ScreenUpdating = False
マクロの途中で何が起こっているかをユーザーに見せたい場合は、次のステートメントを使用して
アプリケーションの画面更新を元に戻します。
Sub FillRange()Dim rをLongに、cをLong Dim NumberにLong Number = 0とした場合、r = 0の場合はScreenUpdating = True
スピードの違いを示すには、 1〜50の場合c = 1〜50の場合Number = Number + 1 Cells(r、c)。セル(r、c)を選択します。 Value = Number Next c Next r End Sub
選択されている各セルとセルに入力されている値が表示されます。プロシージャの先頭に次の文を挿入し、もう一度実行します。
<! - 2 - >アプリケーション。 ScreenUpdating = False
範囲がはるかに高速に塗りつぶされ、マクロの実行が完了し、画面の更新が(自動的に)Trueに設定されるまで、結果は表示されません。
コードをデバッグしているときに、画面の更新をオンにしなくても、途中でプログラムの実行が終了することがあります。これにより、Excelのアプリケーションウィンドウが完全に応答しなくなることがあります。このフリーズ状態からの脱出方法は簡単です。VBEに戻り、イミディエイトウィンドウで次の文を実行します。
<! - 3 - >適用。 ScreenUpdating = True
自動計算をオフにする
複雑な数式を多数含むワークシートを使用している場合、マクロの実行中に計算モードを手動に設定すると、処理速度が大幅に向上することがあります。マクロが終了したら、計算モードを自動に戻します。
次のステートメントは、Excel計算モードをマニュアル:
アプリケーションに設定します。 Calculation = xlCalculationManual
次のステートメントを実行して、計算モードをautomatic:
Applicationに設定します。 Calculation = xlCalculationAutomatic
コードで数式結果のセルが使用されている場合、計算をオフにすると、明示的にExcelに指示しない限り、セルが再計算されません。
これらの厄介な警告メッセージを消去する
ご存じのように、マクロは一連の処理を自動的に実行できます。多くの場合、マクロを開始してから、Excelがその作業をしている間に休憩室に遊びに行くことができます。ただし、一部のExcel操作では、人間の反応が必要なメッセージが表示されます。この種のメッセージは、秘密のトリックを知らない限り、マクロを実行している間はExcelを無人にすることができないことを意味します。
マクロを実行しているときに、Excelにこれらの種類のアラートが表示されないように指示できます。これらの警告メッセージを回避する秘訣は、
アプリケーションに次のVBAステートメントをマクロに挿入することです。 DisplayAlerts = False
Excelは、これらの種類のメッセージに対してデフォルトの操作を実行します。シートを削除する場合、デフォルトの操作はDeleteです。デフォルトの操作がわからない場合は、テストを実行して何が起こるかを確認してください。
プロシージャが終了すると、Excelは自動的にDisplayAlertsプロパティをTrueにリセットします。手順が終了する前にアラートを元に戻す必要がある場合は、次のステートメントを使用します。
アプリケーション。 DisplayAlerts = True
オブジェクト参照を単純化する
おそらく既に知っているように、オブジェクトへの参照は非常に長くなることがあります。たとえば、Rangeオブジェクトへの完全修飾リファレンスは、
Workbooks( "MyBook。xlsx")のようになります。ワークシート( "Sheet1")_。 Range( "InterestRate")
マクロで頻繁にこの範囲を使用する場合は、Setコマンドを使用してオブジェクト変数を作成することができます。たとえば、次のステートメントは、このRangeオブジェクトをRateというオブジェクト変数に割り当てます。
Set Rate = Workbooks( "MyBook。xlsx")_。ワークシート( "シート1")。 Range( "InterestRate")
このオブジェクト変数を定義した後、長い参照ではなく、Rate変数を使用できます。たとえば、InterestRate:
Rateという名前のセルの値を変更できます。値= 085
これは、次の文よりもはるかに簡単です:
ワークブック( "MyBook。xlsx")。ワークシート( "シート1")。 _ Range( "InterestRate")=。 085 999あなたのコーディングを単純化することに加えて、オブジェクト変数を使用することでマクロの速度が大幅に向上します。
変数タイプの宣言
変数に割り当てるデータのタイプについては、通常心配する必要はありません。 Excelは、あなたのためのすべての詳細を舞台裏で処理します。たとえば、MyVarという名前の変数がある場合、その変数に任意の数の型を割り当てることができます。手続きの後半でテキスト文字列を割り当てることさえできます。
プロシージャをできるだけ速く実行したい場合は、各変数にどのような種類のデータを割り当てるかExcelに指示します。これは、変数の型を宣言する
として知られています。 一般に、最小バイト数を必要とするデータ型を使用する必要がありますが、割り当てられたすべてのデータは引き続き処理できます。 VBAがデータと連動する場合、実行速度はVBAが処理できるバイト数に依存します。つまり、データのバイト数が少ないほど、高速のVBAでデータにアクセスして操作することができます。これに対する例外はIntegerデータ型です。速度が重要な場合は、代わりにLongデータ型を使用します。 オブジェクト変数を使用する場合は、その変数を特定のオブジェクト型として宣言できます。例は次のとおりです。
距離の設定率=ワークブック( "MyBook。xlsx")_。ワークシート( "シート1")。範囲( "InterestRate")
With-End With構造体の使用
オブジェクトのプロパティをいくつか設定する必要がありますか? With-End With構造を使用するとコードがより速く実行されます。さらに、コードを読みやすくすることができます。
次のコードではWith With End With:
Selectionを使用しません。 HorizontalAlignment = xlCenterの選択。 VerticalAlignment = xlCenterの選択WrapText =真の選択。オリエンテーション= 0選択。 ShrinkToFit =誤選択。 MergeCells = False
With With End With:
With Selectionを使用するように書き直された同じコードです。 HorizontalAlignment = xlCenter。 VerticalAlignment = xlCenter。 WrapText = True。 Orientation = 0. ShrinkToFit = False。 MergeCells = False End with
With-End Withを使用する場合、各ステートメントがドットで始まることを確認します。