気づけば簡単なことだった
VBA で 組んだ システム で、
データ件数が多いと
実行途中でメモリが足らなくなるのか、
画面が乱れ、
いつしか返ってこなくなるという現象に直面していた。
そして、その解決に、
かなり長い間、苦しんでいた。
そもそも、原因は何なんだ?。
しっかし、メモリを喰うような処理なんかしてないぞ!。
計算途中の値は、ワークシートに書き込んでいるし。
……
……
……
あるとき、気が付いた。
メモリを喰う処理をしているぢゃないか! p(@O@)q。
Application.ScreenUpdating = False
これば、VBA の 処理高速化では、最初に示される おまじないみたいな手法で、
EXCEL 画面 の 更新 を 停止してしまう命令 なのだ。
じゃぁ、その停止している間の更新情報は、どこに行くんだ?
どこに、溜まるんだ?。
更新を再開したら、その時点から、画面は即時更新されるモードになるのか、
それとも、更新を再開したら、それまで溜まっていた内容が一挙に、表示されるのか?
溜まっていた内容で最新内容を作り直し、それが表示されるのか?
どうやら、三番のようである。
つまりは、この処理で、メモリを喰っていたわけで。
おそらくは、更新を止めていると、
溜まっていく内容の最新管理をしようと頑張り、
たため、
なので、 「 更新停止 」 を止めてみたら、
サクサク、動くようになった。
遅くても 速くなくても、
ちゃんと動く!ほうを、選択である。