|
▼Kein さん:
>>例えば'10000'に変更したまま,Excelを終了
>というのが、イマイチ具体的にどうしているのか分からなくて、
>動作が重くなることが理解できないのですが、配列の要素は普通、
>プロシージャの終了と共に消えてなくなるはずですね。
>でも私は特に、動的配列については Erase で初期化して終わるように
>習慣づけてます。動的配列の場合は静的配列と違って、メモリへの割り当て
>まで開放できるからです。Erase のヘルプにそのように書いてあります。
すいませ。説明が足りなかったようですね。
Auto_Openでまず,ユーザーフォームが表示されるプロシージャが実行されます。
このユーザーフォームは色々なチェックボタンがあり,チェックしたボタンに対応したプロシージャがCallされます。
このCallされたプロシージャに Dim i(10) As Long と宣言されています。
例えば,割り当て数10でAuto_Openを実行させ,割り当て数不足のためプロシージャが途中終了されるとします。
そこで Dim i(10000) As Long に変更し,マクロ終了後,いったんExcel(上書き保存で)も終了させます。
再度,Auto_Openでプロシージャを実行させた場合, Dim i(10000) As Long に書き換えられている状態となります。
このため,割り当て数10000 に必要なメモリーを確保した状態でマクロ実行されることになるため,動作が重くなってしまっているようです。(i(10)の場合とは明らかに差がありました)
以上により,Auto_Openで実行した初めに割り当て数の宣言が出来ればと思い投稿した次第です。(意味がわからなかったら,また指摘してください)
|
|