Excel VBA 質問スレ Part39 [転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0471デフォルトの名無しさん
2016/01/19(火) 18:12:17.93ID:jGMD02BB何度も言うようだけど、速度改善を目標にするのは意味ないって。
1分かかる処理を60回繰り返すのだったら、0.1秒速くなっても、1時間の内6秒速くなるだけ。
もし本当に速度改善をしたいなら、処理ブロック毎に処理時間計測をすること。
本当に解決すべきは、そのメモリ不足エラーで、もし関数に配列の値渡しをしているなら、
それが原因かもしれない。
あるいは、60〜120回の繰り返し方が悪いのかもしれない。
public sub foo()
for i = 1 to 60
call メモリを大量に使う関数()
next
end sub
なら、メモリを大量に使う関数のローカル変数は呼び出し終了後に自動解放されるので
問題はないが、以下のようにしているのなら問題がある。
public sub foo()
for i = 1 to 60
' メモリを大量に確保して処理を行う
next
end sub
これはfoo()が終了するまで、メモリを累積して確保し続ける。
確保した変数 = Nothingをnextの前に置けば、状況は改善するかもしれない。
あるいは、メモリ上のデータではなく、シート上のデータを相手にすれば、必要なメモリは
少なくて済む。(処理速度は遅くなるが)
■ このスレッドは過去ログ倉庫に格納されています