ソーシャルメディア あなたのマクロをスピードアップする10の方法 - あなたのExcelマクロが堅牢で複雑になるにつれて、ダミー

あなたのマクロをスピードアップする10の方法 - あなたのExcelマクロが堅牢で複雑になるにつれて、ダミー

目次:

ビデオ: Excel エクセル ひな型で事務処理スピードアップ 企画提案書の作り方 2025

ビデオ: Excel エクセル ひな型で事務処理スピードアップ 企画提案書の作り方 2025
Anonim

Excelマクロが堅牢で複雑になるにつれ、パフォーマンスが低下することがあります。マクロについて議論するとき、 パフォーマンス という単語は、通常 速度 と同義語です。スピードとは、VBAプロシージャが目的のタスクをどのくらい迅速に実行するかです。以下は、Excelマクロを最適なパフォーマンスレベルで実行するための10の方法です。

シート計算を停止する

<! - 1 - >

スプレッドシートの式に影響するセルが変更または操作されるたびに、Excelがワークシート全体を再計算することを知っていますか?多くの数式を含むワークシートでは、この動作によりマクロが大幅に遅くなる可能性があります。

あなたはアプリケーションを使うことができます。手動計算モードに切り替えるようExcelに指示するための計算プロパティ。ブックを手動計算モードにすると、F9キーを押して明示的に計算をトリガするまで、ブックは再計算されません。

<! - 2 - >

Excelを手動計算モードにしてコードを実行し、自動計算モードに戻ります。

Sub Macro1()アプリケーション。 Calculation = xlCalculationManual 'ここにマクロコードを配置します。 Calculation = xlCalculationAutomatic End Sub

計算モードをxlCalculationAutomaticに戻すと、自動的にワークシートの再計算が行われるため、マクロの実行後にF9キーを押す必要はありません。

<! - 9 - >

シート画面の更新を無効にする

マクロを実行すると、画面がかなりちらつくことがあります。このちらつきは、ワークシートの現在の状態を表示するために画面を再描画しようとするExcelです。残念ながら、Excelは画面を再描画するたびに、メモリリソースを消費します。

あなたはアプリケーションを使うことができます。 ScreenUpdatingプロパティを使用して、マクロが完了するまで画面の更新を無効にします。画面の更新を無効にすると、時間とリソースが節約され、マクロを少し速く実行できます。マクロコードの実行が終了すると、画面の更新を元に戻すことができます。

Sub Macro1()アプリケーション。計算= xlCalculation手動アプリケーション。 ScreenUpdating = False 'ここにマクロコードを配置します。計算= xlCalculationAutomaticアプリケーション。 ScreenUpdating = True End Sub

ScreenUpdatingプロパティをTrueに戻すと、Excelは自動的に画面の再描画をトリガします。

ステータスバーの更新をオフにする

Excelウィンドウの下部に表示されるExcelのステータスバーには、通常、特定のアクションの進行状況がExcelで表示されます。マクロが大量のデータを処理している場合、ステータスバーにはいくつかのリソースが使用されます。

画面の更新をオフにすることは、ステータスバーの表示をオフにすることとは別物であることに注意することが重要です。画面更新を無効にしてもステータスバーは更新され続けます。アプリケーションを使用することができます。 DisplayStatusBarプロパティを使用してステータスバーの更新を一時的に無効にし、マクロのパフォーマンスをさらに向上させることができます。

Sub Macro1()Application。計算= xlCalculation手動アプリケーション。 ScreenUpdating = Falseアプリケーション。 DisplayStatusBar = False 'ここにマクロコードを配置します。計算= xlCalculationAutomaticアプリケーション。 ScreenUpdating = Trueアプリケーション。 DisplayStatusBar = True End Sub

Excelにイベントを無視するように伝える

イベントプロシージャとしてマクロを実装し、ワークシートまたはブックの変更時に特定のコードを実行するようにExcelに指示できます。

時々、標準マクロはイベントプロシージャをトリガする変更を行います。たとえば、Sheet1の複数のセルを操作する標準マクロがある場合、そのシート上のセルが変更されるたびに、Worksheet_Changeイベントの実行中にマクロが一時停止する必要があります。

EnableEventsプロパティを使用して、マクロの実行中にイベントが無視されるようにExcelに指示することで、パフォーマンスをさらに高めることができます。

マクロを実行する前に、EnableEventsプロパティをFalseに設定します。マクロコードの実行が終了したら、EnableEventsプロパティをTrueに戻すことができます。

Sub Macro1()アプリケーション。計算= xlCalculation手動アプリケーション。 ScreenUpdating = Falseアプリケーション。 DisplayStatusBar =誤ったアプリケーション。 EnableEvents = False 'ここにマクロコードを配置します。計算= xlCalculationAutomaticアプリケーション。 ScreenUpdating = Trueアプリケーション。 DisplayStatusBar = Trueアプリケーション。 EnableEvents = True End Sub

ページ区切りを隠す

行数を変更したり、列の数を変更したり、ワークシートのページ設定を変更したり、Excelが表示されたページ区切りを再計算するのに時間がかかるシート上に

マクロを開始する前にページ区切りを隠すだけで、この動作を回避できます。

ページ区切りを非表示にするには、DisplayPageBreaksシートプロパティをFalseに設定します。マクロの実行後に改ページを表示したい場合は、DisplayPageBreaksシートプロパティをTrueに戻します。

Sub Macro1()アプリケーション。計算= xlCalculation手動アプリケーション。 ScreenUpdating = Falseアプリケーション。 DisplayStatusBar =誤ったアプリケーション。 EnableEvents = Falseアクティブシート。 DisplayPageBreaks = False 'ここにマクロコードを配置します。計算= xlCalculationAutomaticアプリケーション。 ScreenUpdating = Trueアプリケーション。 DisplayStatusBar = Trueアプリケーション。 EnableEvents = Trueアクティブシート。 DisplayPageBreaks = True End Sub

ピボットテーブルの更新の中断

大きなデータソースを含むピボットテーブルをマクロが操作する場合、ピボットフィールドを動的に追加または移動するときにパフォーマンスが低下することがあります。

すべてのピボットフィールドの変更が行われるまで、ピボットテーブルの再計算を中断することにより、マクロのパフォーマンスを向上させることができます。ピボットテーブルを設定するだけです。 ManualUpdateプロパティをTrueに設定して再計算を延期し、マクロコードを実行してピボットテーブルを設定します。 ManualUpdateプロパティをFalseに戻して、再計算をトリガーします。

Sub Macro1()ActiveSheet。ピボットテーブル( "ピボットテーブル1")。 ManualUpdate = True 'あなたのマクロコードをActiveSheetに置きます。ピボットテーブル( "ピボットテーブル1")。 ManualReport = False End Sub

コピー&ペーストの操縦

マクロレコーダーはVBAコードを書くことで時間を節約できますが、最も効率的なコードを書くとは限りません。マクロレコーダーが録音中に実行するコピーアンドペーストのアクションをキャプチャする方法の代表例があります。

仲介人を切り抜いて、あるセルから宛先セルに直接コピーを実行することで、マクロにわずかな向上を与えることができます。この代替コードでは、Destination引数を使用してクリップボードをバイパスし、セルA1の内容をセルB1に直接コピーします。

範囲( "A1")。コピー先:=範囲( "B1")

(書式や数式ではなく)値のみをコピーする必要がある場合は、Copyメソッドをすべて一緒に避けることで、パフォーマンスをさらに向上させることができます。宛先セルの値をソースセル内の同じ値に設定するだけです。このメソッドは、Copyメソッドを使用するよりも約25倍高速です:

Range( "B1")。値=範囲( "A1")。値

1つのセルから別のセルに式のみをコピーする必要がある場合(値または書式ではなく)、宛先セルの式をソースセルに含まれる同じ数式に設定できます。

)。数式=範囲( "A1")。式

Withステートメントの使用

マクロを記録するときに、同じオブジェクトを複数回操作することがよくあります。 Withステートメントを使用して、特定のオブジェクトに対して複数のアクションを1回実行することで、時間を節約し、パフォーマンスを向上させることができます。

次の例で使用されるWithステートメントは、すべての書式変更を一度に適用するようにExcelに指示します。

With Range( "A1")。フォント。ボールド= True。イタリック= True。 Underline = xlUnderlineStyleSingle End With

Withステートメントでアクションをチャンクするのは、マクロの実行を速くするだけでなく、マクロコードを読みやすくするためです。

Selectメソッドの回避

Macro Recorderは、Selectメソッドを使用してオブジェクトを明示的に選択してからアクションを実行することが大好きです。一般的にオブジェクトを選択する必要はありません。実際、Selectメソッドを使用しないことでマクロのパフォーマンスを大幅に向上させることができます。

マクロを記録したら、生成されたコードを変更してSelectメソッドを削除することを習慣にします。この場合、最適化されたコードは

Sheets( "Sheet1")のようになります。範囲( "A1")。 Formula1C1 = "1000" Sheets( "Sheet2")。範囲( "A1")。 Formula1C1 = "1000" Sheets( "Sheet3")。範囲( "A1")。 Formula1C1 = "1000"

何も選択されていないことに注意してください。このコードでは、オブジェクト階層を使用して必要なアクションを適用するだけです。

ワークシートへのトリップの制限

マクロの速度を上げるもう一つの方法は、コード内のワークシート・データを参照する時間を制限することです。メモリからではなく、ワークシートからデータを取得することは常に効率的ではありません。つまり、ワークシートと繰り返し対話する必要がなければ、マクロは非常に高速に実行されます。

たとえば、次の単純なコードは、VBAがSheets( "Sheet1")に継続的に戻るようにします。 Range( "A1"):Ifステートメントで比較を実行するために必要な数値を取得します。

For ReportMonth = 1 To 12 Range( "A1")。 Value = ReportMonth Then MsgBox 1000000 / ReportMonth End If Next ReportMonth

はるかに効率的な方法は、シート( "シート1")の値を保存することです。範囲( "A1")を変数MyMonthに設定します。この方法で、コードはワークシートの代わりにMyMonth変数を参照します。

Dim MyMonth as Integer MyMonth = Range( "A1")。 ReportMonthの値= 1〜12 If MyMonth = ReportMonth Then MsgBox 1000000 / ReportMonth End If Next ReportMonth

ワークシートを直接参照するのではなく、変数を利用してメモリ内のデータを処理することを検討してください。

あなたのマクロをスピードアップする10の方法 - あなたのExcelマクロが堅牢で複雑になるにつれて、ダミー

エディタの選択

IOSアプリケーション開発の既存クラスにメソッドを追加する方法 - ダミー

IOSアプリケーション開発の既存クラスにメソッドを追加する方法 - ダミー

Objective-Cでは、作成していないクラスであっても、iOSアプリケーションの既存のクラスに独自のメソッドを追加できます。クラスにメソッドを追加することは、特定の状況でのみ新しい動作が使用される場合に便利です。たとえば、特定のアプリケーション...

IOSアプリケーション開発の既存クラスにメソッドを追加する方法 - ダミー

IOSアプリケーション開発の既存クラスにメソッドを追加する方法 - ダミー

IOSアプリケーションの開発では、Objective-Cを使用すると、自分が作成していないクラスであっても、既存のクラスに独自のメソッドを追加することができます。クラスにメソッドを追加することは、特定の状況でのみ新しい動作が使用される場合に便利です。たとえば、特定のアプリケーション(たとえば、...

In App Purchase機能がiPadアプリで動作する仕組み

In App Purchase機能がiPadアプリで動作する仕組み

Apple App App Purchase機能を提供します。これにより、アプリユーザーはアプリ内から仮想アイテムを直接購入することができます。複数のレベルや環境、または仮想プロパティを持つゲームアプリケーションを開発する場合は、アプリケーションにIn App Purchase機能を追加して、レベル、環境、またはプロパティをさらに販売することを検討してください。 App Purchaseで...

エディタの選択

効果的なホームビジネスWebサイトを作成する方法 - ダミー

効果的なホームビジネスWebサイトを作成する方法 - ダミー

素晴らしいかもしれませんが、製品やサービスをさらに販売するのに役立たない場合は、時間とお金の無駄です。自宅のビジネスにとって本物の資産であるWebサイトを構築するための、実証済みの方法をいくつか試してみましょう。難しいことではありません...

マスターCSSファイルを作成する方法 - ダミー

マスターCSSファイルを作成する方法 - ダミー

多くのデザイナーがマスターHTMLコードのCSSファイルを作成し、個々のサイトのニーズに合わせて、最初からウェブサイトを構築するプロセスをスピードアップします。あなたがより多くのウェブサイトを構築するにつれて、いくつかのスタイルは標準的なデザインプラクティスの標準的な部分になります。 ...

MSN adCenterのウェブマーケティングキャンペーンのアカウントを作成する方法 - ダミー

MSN adCenterのウェブマーケティングキャンペーンのアカウントを作成する方法 - ダミー

Bing検索結果と並んでクリック単価(PPC)広告はMSN adCenterを通じて提供されます。 adCenterを使用して、Webマーケティングのニーズに合わせてアカウントとキャンペーンを作成できます。 Microsoftは、Bing Travel、adCenter Desktopなどのプログラムを追加することで、PPCサービスのインターフェース、ツール、検索品質、およびボリュームを向上させるために歩み続けています。...

エディタの選択

地中海ダイエットレシピ:フルーツサラダ - ダミー

地中海ダイエットレシピ:フルーツサラダ - ダミー

果実は地中海で豊富に生育し、地中海沿岸に沿って、アメリカ人より一般的に果実を多く食べるため、地中海の高レベルの疾病予防に貢献しています。あなたの次の食事やパーティーのために健康的なサイドディッシュのフルーツサラダを作るには、いくつかの方法があります。果物は地中海で豊富に生育し、地中海沿岸に住む人々は一般にアメリカ人よりも多くの果実を食べるため、地中海の高レベルの疾病予防に寄与します。

地中海料理ダイスレシピ:クラシックジャイロとピタ - ダミー

地中海料理ダイスレシピ:クラシックジャイロとピタ - ダミー

ジャイロとピタサンドイッチは一般的なカジュアルな食品です地中海でピザや他の地中海のサンドイッチと同じように、今日はピタサンドイッチとジャイロのさまざまなバージョンが存在します。ピタスは蒸気で作られた中央のポーチ付きの丸いパンです。