Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


36090 / 76738 ←次へ | 前へ→

【45833】Re:Dimについて
質問  tomo  - 07/1/15(月) 17:07 -

引用なし
パスワード
   ▼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で実行した初めに割り当て数の宣言が出来ればと思い投稿した次第です。(意味がわからなかったら,また指摘してください)
0 hits

【45816】Dimについて tomo 07/1/15(月) 8:35 質問
【45817】Re:Dimについて ぱっせんじゃー 07/1/15(月) 8:42 発言
【45818】Re:Dimについて tomo 07/1/15(月) 9:52 質問
【45819】Re:Dimについて neptune 07/1/15(月) 10:07 回答
【45820】Re:Dimについて neptune 07/1/15(月) 10:20 回答
【45821】Re:Dimについて tomo 07/1/15(月) 13:29 質問
【45826】Re:Dimについて neptune 07/1/15(月) 14:52 回答
【45830】Re:Dimについて tomo 07/1/15(月) 15:56 発言
【45835】Re:Dimについて Kein 07/1/15(月) 18:07 発言
【45837】Re:Dimについて tomo 07/1/15(月) 20:06 お礼
【45824】Re:Dimについて Kein 07/1/15(月) 14:40 発言
【45833】Re:Dimについて tomo 07/1/15(月) 17:07 質問
【45834】Re:Dimについて Kein 07/1/15(月) 18:04 発言

36090 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free