拾うロマンに、捨てるロマン


 自分の頭ではいよいよ考えつかなくなり、遂に「マクロ 高速化」という言葉で検索をかけた結果、目の前には想像通り「答え」が並んでいた。

 早速、何件かのサイトを見て回ってみると、共通して書かれている方法があった――それは「画面更新の非表示」である。

 マクロを実行している間、値を設定する度に新しい乱数が生成され、画面上に文字が表示される。このを止めることによって、高速化を図ろうという訳である。

 もちろん、画面の描写を止めても、セルには値が設定されているので、これによって動作がおかしくなるようなことはない。


 実装方法は非常に簡単。

 画面の更新を行う処理の前に「Application.ScreenUpdating = False」と入れるだけ。英語ではあるが、「アプリケーションの画面更新をオフ(False)にする」という意味合いであることは、なんとなく分かるだろう。

(それと同時に、マクロの終わり際に「Application.ScreenUpdating = True」と入れ、設定を元に戻しておく)


 早速、この一文をソースに追加した上で実行を行う。

 今回は結果だけを早く確認したかったので、530000行を3回通り繰り返すにとどめている。

 結果は以下のとおり。


 1回目:19.16秒――ゲド

 2回目:19.03秒――ダモノ

 3回目:19.04秒――ハ


 第2回のレポートの平均実行時間が「21.88秒」だったことを考えると、およそ2.5秒――すなわち一割から一割五分程度の削減となった。

 塵が積もって富士山になるようなこの現状で、「一割」がもたらす影響は決して小さくはない。悪くはないスタートと言えるだろう。

 ただ、「画面を淡々と描写し続ける」というは消えた。アニメや小説の分析シーンで出てくるような画面の明滅が無くなったのである。

 そういう実装をしたのだから当たり前なのだが――少しだけ虚しく感じてしまう。


 修正は更に続く。

 セルの値を取得する際に、Rangeを用いていたものについて、Cellsを用いるように変更(言い換えると「範囲」を参照していたものを「セル」を参照するように設定)してみる。

 実行結果は以下の通り。


 1回目:18.89秒――タノャリ

 2回目:18.87秒――ニェメヴ

 3回目:18.93秒――ナプ


 本当に微々たる差ではあるが、早くなっている。

 こんな修正で早くなったりするのか……E〇CEL(というよりマクロ)の仕様は奥が深いなあ。

  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る