Excel VBA質問箱 IV

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

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


2951 / 13646 ツリー ←次へ | 前へ→

【65083】突然処理速度の低下 リームー 10/4/14(水) 2:09 質問[未読]
【65084】Re:突然処理速度の低下 247b 10/4/14(水) 8:23 発言[未読]
【65085】Re:突然処理速度の低下 リームー 10/4/14(水) 11:18 お礼[未読]
【65087】Re:突然処理速度の低下 247b 10/4/14(水) 13:01 発言[未読]
【65090】Re:突然処理速度の低下 リームー 10/4/14(水) 20:52 お礼[未読]

【65083】突然処理速度の低下
質問  リームー  - 10/4/14(水) 2:09 -

引用なし
パスワード
   2003 XPです。

長めのマクロを組んだのですが、最初の内はかなり早く処理してるのですが、とある地点から処理速度が急激に落ちて(速度1/10とかいうレベルじゃない)、それ以降同マクロを回すと遅いままになってしまいました。これはどういった症状なのですか?

もしかしたらセルに数式を""使って大量に書き込んでるのが原因ですか?

ちなみに途中にbeep音を入れてその感覚でマクロの速度を調べています。

色んなところでググったり投稿したりしてるのですが未だ解決しておりません。
宜しくお願いします。

【65084】Re:突然処理速度の低下
発言  247b  - 10/4/14(水) 8:23 -

引用なし
パスワード
   おはようございます。

とりあえず、以下の処理をまだ入れていないなら対応してみてください。

処理開始直前に
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

処理終了直前に
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True


EXCELはセルの値や数式に変更がかかると自動再計算を行い、全数式を計算し直します。
使用している数式の数が多いと、再計算に時間がかかり、処理速度が落ちます。
開始前の1行目はそれを止める処理です。終了直前の1行目で自動再計算に戻します。

同様に画面描画も処理を遅くする原因なので、これも止めます。ただし、止めっぱなしにすると
プログラムが終了してもエクセルが固まるので注意が必要です。
ただ、お話の限りでは、遅くなり方が半端ではないので、これ以外にも要因があるかもしれません。


手前味噌で恐縮ですがご参考に
://sites.google.com/site/compositiosystemae/home/vbaworld/primitive/exp1/stopredrow

【65085】Re:突然処理速度の低下
お礼  リームー  - 10/4/14(水) 11:18 -

引用なし
パスワード
   文頭にApplication.ScreenUpdating = Falseは習慣でやってましたが。

Application.Calculation = xlCalculationManual '停止
Application.Calculation = xlCalculationAutomatic '再開
は知らない知識でした。

一部計算結果が欲しいところだけ直前でAutomaticにして終了後Manualに戻すだけで速度低下回避出来た上に相当パフォが上がりました。

本当に助かりました。ありがとう御座いました。

・・・ただ、マクロが終わっても次使う時に速度低下状態が持ち越される現象はいったいなんだったんでしょうね? もう起こらない事を祈るばかりです。

【65087】Re:突然処理速度の低下
発言  247b  - 10/4/14(水) 13:01 -

引用なし
パスワード
   うまくいったみたいで何よりでした。

>・・・ただ、マクロが終わっても次使う時に速度低下状態が持ち越される現象はいったいなんだったんでしょうね? もう起こらない事を祈るばかりです。

Application.ScreenUpdatingがFalseのままだと、マクロが終了してもエクセルが固まったままになることがあったと思います。

【65090】Re:突然処理速度の低下
お礼  リームー  - 10/4/14(水) 20:52 -

引用なし
パスワード
   >Application.ScreenUpdatingがFalseのままだと、マクロが終了してもエクセルが固まったままになることがあったと思います。

まだ試してないですけど非常に可能性は高いです。
Application.ScreenUpdating=Falseを解除する習慣がなかったもので、これからは気をつけます。

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