Excel 2016VBA速度のヒント

Excel 2016VBA速度のヒント

VBA for Excel 2016は高速ですが、必ずしも十分に高速であるとは限りません。(コンピュータープログラムは決して十分に高速ではありません。)マクロを高速化するために使用できるいくつかのプログラミング例を見つけるために読み続けてください。

画面の更新をオフにする

マクロを実行するときは、座って、マクロで発生するすべての画面上のアクションを見ることができます。これを行うことは有益な場合がありますが、マクロを適切に機能させた後は、多くの場合煩わしく、マクロのパフォーマンスが大幅に低下する可能性があります。幸い、マクロの実行時に通常発生する画面更新を無効にすることができます。画面の更新をオフにするには、次のステートメントを使用します。

Application.ScreenUpdating = False

マクロ中の任意の時点で何が起こっているかをユーザーに確認させたい場合は、次のステートメントを使用して、画面の更新をオンに戻します。

Application.ScreenUpdating = True

速度の違いを示すために、次の単純なマクロを実行します。このマクロは、範囲を数値で埋めます。

サブFillRange()
  Dim r as Long、c As Long
  長さのある薄暗い番号
  番号= 0
  r = 1から50の場合
    c = 1から50の場合
      数=数+1
      Cells(r、c).Select
      Cells(r、c).Value = Number
    次のc
  次のr
エンドサブ

各セルが選択され、値がセルに入力されているのがわかります。次に、プロシージャの先頭に次のステートメントを挿入して、再度実行します。

Application.ScreenUpdating = False

範囲ははるかに速く埋められ、マクロの実行が終了し、画面の更新が(自動的に)Trueに設定されるまで結果は表示されません。

コードをデバッグしているときに、画面の更新をオンに戻さずに、プログラムの実行が途中で終了することがあります。これにより、Excelのアプリケーションウィンドウが完全に応答しなくなることがあります。このフリーズ状態から抜け出す方法は簡単です。VBEに戻り、イミディエイトウィンドウで次のステートメントを実行します。

Application.ScreenUpdating = True

自動計算をオフにする

多くの複雑な数式を含むワークシートがある場合は、マクロの実行中に計算モードを手動に設定することで、処理を大幅に高速化できる場合があります。マクロが終了したら、計算モードを自動に戻します。

次のステートメントは、Excelの計算モードを手動に設定します。

Application.Calculation = xlCalculationManual

次のステートメントを実行して、計算モードを自動に設定します。

Application.Calculation = xlCalculationAutomatic

コードで数式結果のセルを使用している場合、計算をオフにすると、Excelに明示的に指示しない限り、セルは再計算されません。

それらの厄介な警告メッセージを排除する

ご存知のように、マクロは一連のアクションを自動的に実行できます。多くの場合、マクロを開始してから、Excelが処理を実行している間、休憩室にたむろすることができます。ただし、一部のExcel操作では、人間の応答が必要なメッセージが表示されます。これらのタイプのメッセージは、マクロの実行中にExcelを無人のままにすることはできないことを意味します—秘密のトリックを知らない限り。

Excel 2016VBA速度のヒント

マクロの実行中にこれらのタイプのアラートを表示しないようにExcelに指示できます。

これらのアラートメッセージを回避する秘訣は、次のVBAステートメントをマクロに挿入することです。

Application.DisplayAlerts = False

Excelは、これらのタイプのメッセージに対してデフォルトの操作を実行します。シートを削除する場合、デフォルトの操作は削除です。デフォルトの操作がわからない場合は、テストを実行して何が起こるかを確認してください。

プロシージャが終了すると、ExcelはDisplayAlertsプロパティを自動的にTrueにリセットします。手順が終了する前にアラートをオンに戻す必要がある場合は、次のステートメントを使用します。

Application.DisplayAlerts = True

オブジェクト参照の簡素化

おそらくすでにご存知のように、オブジェクトへの参照は非常に長くなる可能性があります。たとえば、Rangeオブジェクトへの完全修飾参照は次のようになります。

Workbooks(“ MyBook.xlsx”)。Worksheets(“ Sheet1”)_
  .Range( "InterestRate")

マクロでこの範囲を頻繁に使用する場合は、Setコマンドを使用してオブジェクト変数を作成することをお勧めします。たとえば、次のステートメントは、このRangeオブジェクトをRateという名前のオブジェクト変数に割り当てます。

セットレート= Workbooks(“ MyBook.xlsx”)_
  .Worksheets( "Sheet1")。Range( "InterestRate")

このオブジェクト変数を定義した後、長い参照ではなく変数Rateを使用できます。たとえば、InterestRateという名前のセルの値を変更できます。

Rate.Value = .085

これは、次のステートメントよりもはるかに簡単に入力できます。

Workbooks(“ MyBook.xlsx”)。Worksheets(“ Sheet1”)。_
  Range(“ InterestRate”)= .085

コーディングを簡素化することに加えて、オブジェクト変数を使用すると、マクロが大幅に高速化されます。

変数型の宣言

通常、変数に割り当てるデータの種類について心配する必要はありません。Excelは、舞台裏ですべての詳細を処理します。たとえば、MyVarという名前の変数がある場合、その変数に任意のタイプの番号を割り当てることができます。手順の後半で、テキスト文字列を割り当てることもできます。

プロシージャをできるだけ速く実行する場合は、各変数に割り当てられるデータの種類をExcelに通知します。これは、変数の型の宣言として知られています。

一般に、必要なバイト数が最小でありながら、割り当てられたすべてのデータを処理できるデータ型を使用する必要があります。VBAがデータを処理する場合、実行速度はVBAが自由に使用できるバイト数によって異なります。つまり、データの使用バイト数が少ないほど、VBAがデータにアクセスして操作する速度が速くなります。これの例外は整数データ型です。速度が重要な場合は、代わりにLongデータ型を使用してください。

オブジェクト変数を使用する場合は、変数を特定のオブジェクトタイプとして宣言できます。次に例を示します。

範囲としての減光率
セットレート= Workbooks(“ MyBook.xlsx”)_
  .Worksheets( "Sheet1")。Range( "InterestRate")

With-EndWith構造の使用

オブジェクトにいくつかのプロパティを設定する必要がありますか?With-End With構造を使用すると、コードの実行速度が速くなります。追加の利点は、コードが読みやすくなる可能性があることです。

次のコードはWith-EndWithを使用していません。

Selection.Horizo​​ntalAlignment = xlCenter
Selection.VerticalAlignment = xlCenter
Selection.WrapText = True
Selection.Orientation = 0
Selection.ShrinkToFit = False
Selection.MergeCells = False

With-EndWithを使用するように書き直された同じコードを次に示します。

選択あり
  .Horizo​​ntalAlignment = xlCenter
  .VerticalAlignment = xlCenter
  .WrapText = True
  .Orientation = 0
  .ShrinkToFit = False
  .MergeCells = False
で終わる

With-End Withを使用する場合は、各ステートメントがドットで始まることを確認してください。


スマートシート 9.1.1

スマートシート 9.1.1

Smartsheet は、プロジェクトの管理、ワークフローの構築、チームとの共同作業を可能にする動的な作業プラットフォームです。

共有ポイント

共有ポイント

SharePoint は、さまざまなワークフロー アプリケーション、「リスト」データベース、その他の Web コンポーネント、およびビジネス グループの共同作業を制御するためのセキュリティ機能を使用する Web ベースのコラボレーション システムです。

パーペチュアルカレンダー 1.0.38/1.0.36

パーペチュアルカレンダー 1.0.38/1.0.36

Van Nien Calendar は、携帯電話でカレンダーを表示するアプリケーションです。携帯電話で太陰太陽の日付をすぐに確認できるため、重要な仕事を計画することができます。

Microsoft Outlook 2021

Microsoft Outlook 2021

Microsoft Outlook は、Microsoft Corporation によって開発されたビジネスおよび生産性アプリケーションです。

クリックアップ

クリックアップ

ClickUp は、あらゆるビジネスにとって最も評価の高い生産性プラットフォームの 1 つです。Google、Booking.com、サンディエゴ・パドレス、Uber などの大企業はすべて、職場の生産性を向上させるために ClickUp を使用しています。

PDF-XChange ビューア 2.5.322.10

PDF-XChange ビューア 2.5.322.10

PDF は、テキスト ドキュメントの読み取り、作成、送信に一般的に使用される形式になっています。その結果、この種のドキュメントに使用されるプログラムの数も増加しました。PDF-XChange Viewer は、ますます多くの PDF ビューアの 1 つです。

Apache OpenOffice

Apache OpenOffice

Apache OpenOffice は、特に Excel、PowerPoint、Word など、Microsoft 365 に匹敵する Office アプリケーションの完全なスイートを提供します。プロジェクトをより効率的に管理できるようになり、いくつかのファイル形式がサポートされます。

iTaxviewer 1.8.7をダウンロード

iTaxviewer 1.8.7をダウンロード

iTaxViewer ソフトウェアは、現在最も人気のある XML ファイル読み取りソフトウェアです。このソフトウェアは、国税総局のXML形式の電子申告書を閲覧するためのアプリケーションです。

Nitro PDF リーダー

Nitro PDF リーダー

Nitro PDF Reader は、ほとんどの人が PDF ドキュメントを使用して毎日実行する基本的なタスクをすべてカバーする便利な PDF エディターです。

Foxit リーダー 12

Foxit リーダー 12

Foxit Reader は主に PDF リーダーですが、PDF ファイルの作成、署名、編集、注釈の追加も可能です。オペレーティング システム上で動作し、Microsoft Office パッケージのさまざまなプログラム用のプラグインがあります。