気づけば簡単な事だった

 

気づけば簡単なことだった


VBA で 組んだ システム で、
 データ件数が多いと
  実行途中でメモリが足らなくなるのか、
   画面が乱れ、
    いつしか返ってこなくなるという現象に直面していた。

そして、その解決に、
 かなり長い間、苦しんでいた。

そもそも、原因は何なんだ?。

しっかし、メモリを喰うような処理なんかしてないぞ!。
 計算途中の値は、ワークシートに書き込んでいるし。

……
 ……
  ……

あるとき、気が付いた。

メモリを喰う処理をしているぢゃないか! p(@O@)q。

Application.ScreenUpdating = False


これば、VBA の 処理高速化では、最初に示される おまじないみたいな手法で、
EXCEL 画面 の 更新 を 停止してしまう命令 なのだ。

じゃぁ、その停止している間の更新情報は、どこに行くんだ?

どこに、溜まるんだ?。

更新を再開したら、その時点から、画面は即時更新されるモードになるのか、
 それとも、更新を再開したら、それまで溜まっていた内容が一挙に、表示されるのか?
  溜まっていた内容で最新内容を作り直し、それが表示されるのか?

どうやら、三番のようである。

つまりは、この処理で、メモリを喰っていたわけで。
 おそらくは、更新を止めていると、
  溜まっていく内容の最新管理をしようと頑張り、


たため、
なので、 「 更新停止 」 を止めてみたら、
 サクサク、動くようになった。

遅くても 速くなくても、
 ちゃんと動く!ほうを、選択である。