こんにちわ、ぽりです。
いきなり質問です。
For I = 1 To 1000
Entry = "登録" & I
List1.AddItem Entry
Next I
このコードを実行すると、項目を追加するたびに
リストボックスの書き換えが行われ、見た目の更新でも結構な時間を
費やしているように思われます。
VBAでいうApplication.ScreenUpdating = False
の様に画面の更新を停止する方法って無いでしょうか?
リストボックスのVisibleをいじってもScreenUpda...のような
パフォーマンスが獲られていないような気がします。
ご存じの方居られましたら是非ご教授お願い致します。
APIのLockWindowUpdateを使います。
引数にリストボックスのhWndを入れると、
もう一度APIを呼び出す(解除には引数に0を指定)まで、更新が停止されます。
簡潔でいてわかりやすいパーフェクトな回答有り難う御座います。
これから.netに移行するので、
また現れる事があるかと思います。
そのときはどうぞ宜しくお願い致しますm(-_-)m
あああ、よく分かりませんけど、もし.NETのリストボックス(または標準関数とか)に、
更新を一時停止するようなメソッドがあったら、それを使った方がいいですよー。
上のAPIはシステム上(プロセス上かも)でひとつのコントロールしか更新を停止できないので、
使いすぎるとどこかで予期しないことになる(まあ、突然更新が止まってしまうことはないと思いますけど…)可能性があるのと、
.NETはマルチプラットフォームも考えにあるとのことなので、
そのときAPIを使ってると、困るからです。
安全にやるなら、リストボックスをいったん非表示にしてもいいと思います。
それで目立ってしまうなら、そのあいだにせもののリストボックスを表示するとか。
APIの使用をなるべく避けているのでリストボックスの
非表示で解決いたしました。
お返事遅れてすみません(--;)
あまりにも遅レスになってしまうのでためらってしまいましたが
改めてお礼申し上げますm(_ _)m
ツイート | ![]() |