Excel
macro
VBA

VBAが遅くなる想定外な理由

More than 1 year has passed since last update.

概要

新しい部署でのプログラム経験者という事で、ちょっとしたデータをゴニョゴニョするためのマクロを作ることを命じられました。
これ見よがしに1日で完成させてマニュアルまで別シートに丁寧に準備したところ、何故かoffsetとかrangeでvalueやtextを設定するロジックが片っ端から遅くなりました。

原因は、VBAとは全く関係ないと思っていたマニュアルのシートにありました、、、

環境

PC

Windows 7 64bit
Microsoft Office Home and Business 2013
(Excel)

サンプルエクセル

例えば下記のような「マニュアル」と「ツール」の2つのシートを持つエクセルファイル
001.PNG

002.PNG

原因

リンクでの図の貼り付けが、offsetやvalue等のcellの操作系関数の実行速度に影響がでます!

サンプルエクセル

シート「ツール」のB2:O7のセルをコピーして、別シート「マニュアル」に「リンク貼り付け」を行うと、今回のようなことになります。

003.PNG

004.PNG

対策

リンクが駄目です。
下記のようなVBAならではの更新停止も効きません。

Application.ScreenUpdating = False

図での貼付けにするか、マニュアルは別シートにして下さい!