VBでスプレッドシートを使用した
アプリを作成する際に、非常に大量のデータを表示
した場合、フォームのアンロードに非常に時間がかかって
しまいます。
HIDEステートメントで非表示にすればはやいんですが、
結局アプリ自体を終了する場合に遅くなってしまいます。
なにかいい方法ないでしょうか?
始めまして みゅうと申します。
実際の状況はあまり見えませんが、アプリケーション自体 多数のフォームで構成されている場合、Unload及び、アプリケーションのEndは相当重いものになりますよね。
で スプレッドのお話ですが、Unloadする際 空文字等でクリアなどされてるのでしょうか? かつ、for Nextなどでまわしてたりしてないでしょうか?
もし、そうであればそれが原因ですね。
with
すみません 途中でした。
With Form.vaSpr
.Col = -1
.Row = -1
.Text = ""
end With
の様な感じで一括クリアというのはどうでしょうか?
お答えの的が外れていたら申し訳ございません。
追記です。
プロパティーのMaxColとMaxRowの設定値をいきなり0にしてしまうのも
ありなのでは?と思います。
一気にメモリを開放すると(未確認)思いますので。
やってみてください。
回答ありがとうございます。
前者の回答についてなんですが、たしかに
Row Colプロパティを使用して設定しています。
で、Unloadする際にはセルのクリアはしてないですね。
単にアンロードしています。
なので、単にメモリを食いすぎているのが原因だとはおもうのですが。
そのMAXROWSを0にするという方法は
非常に有効ですね。
実際にためしましたが、今まで5分ほどかかっていた
3万件のデータを表示しているフォームのUnloadが
10秒程度になりました。
とりあえずこの手法でおこないたいと思います。
ありがとうございました。
ツイート | ![]() |