トップ > 資格を活かすには > やってみよう!Excel VBAで業務改善! > 新たなる挑戦編: 第14話「マクロを高速化しよう!」1/4 :負荷がかかる処理って?

やってみよう!Excel VBAで業務改善! 新たなる挑戦編|第14話 「マクロを高速化しよう!」

負荷がかかる処理って?

「ちょうどいい機会だ。マクロの高速化について、話してやろう」 「マクロの高速化…だって?」 「以前に少し話したことがあるけど…、
セルに対する処理、特にセルに値を書き込む処理というのは、とても負荷がかかる処理なんだ。
セルにはたくさんのプロパティがあるだろう?」
「うん。値のほかに、背景色や罫線…フォントの書式とか…いろいろあるね」 「そうだ。セルに値を書き込むとき、どうしてもExcelによるそれらプロパティへの評価が発生する。
つまりセルに対するアクセスが多いほど、マクロの実行時間が長くなるということなんだ」
星くんは、改めて自分の書いたコードを見直しました。

「そっか…。俺の書いたコードは3000件を超えるデータの…
しかも最大10件の内示データを、毎回セルに書き込みにいってるんだよな…
そりゃ、遅くなるはずだよ。
…でも、セルに値を書き込まなければ、CSVのデータを取り込めないし…
いったいどうすりゃいいんだい?」
八木くんは待ってました!といわんばかりに、メガネをクイッと持ち上げました。

「そのとおりだ、星。
セルに値を書き込まなければ、データを取り込むことはできない。
問題はセルに値を書き込む回数なんだ。
…そうだな、例えば…ある書類を、たくさんの会社に郵送しなければならない業務が発生したとする。
星、おまえならどうする?」
星くんは心もち首をかしげます。

「…そうだなあ。
まず書類を用意して必要な数の封筒に入れる。
それぞれに宛名を書いて切手を貼り、まとめて郵便局に持って行くよ」
「じゃあ、もしもだよ。
おまえの部長が、封筒を1つ作るたびに郵便局に持って行け!といったら…どう思う?」
星くんはプッと吹き出しました。

「あの部長が、そんな非効率的なことをいうわけないよ。
…はーん、なるほど。
要するに、俺の作ってきたプログラムは、封筒を作るたびに郵便局に持って行く…
そんな非効率的な処理をやっているというわけだな…八木?」

一覧にもどる