プロが教えるわが家の防犯対策術!

Excel2003です。
1つのブックにシート数が20,1シートには200列×100行ほどのデータおよび計算式・オートシェイプ20個・カメラの機能を使ったシェイプ(picture)が10個ほど入っています。
機能自体は実装が終わり、運用するだけですが、一つ問題があります。
それは、数値を入力してEnterキーを押してから、次の数値が入力できるまで3~4秒かかることです。
開発機はAthlon X2 3800+ メモリ2G + ハードディスク500G ですので、クライアントはもっと貧弱なシステム構成になります。
これではとても使い物になりません・・・
動作のボトルネットクになっているのは何でしょうか?
試したことは重そうな処理だと思われるカメラで取ったpictureを非表示にしたくらいですが、あまり改善されませんでした・・・
VBAの速度ではなく、セルへのアクセス自体が異常に遅いのです。
開発機およびクライアント機(10台程度)で試してみましたが、PCによって速度が変化するわけではないようです。

A 回答 (3件)

>関数を極力減らしてVBA側で処理しているのです・・・



VBAでセルが書き換えられる都度イベントが発生して再計算が始まります。
実行時に再計算を抑止して終了時に再計算を実行するようにします。

sub XXXX()
Application.Calculation = xlCalculationManual
処理
Application.Calculation = xlCalculationAutomatic
end sub

>試したことは重そうな処理だと思われるカメラで取ったpictureを非表示にしたくらいですが、あまり改善されませんでした・・・

カメラ機能を使った画像がある場合、速度が異常に遅くなります。
できれば削除した方が良いでしょう。
    • good
    • 0
この回答へのお礼

「カメラ機能を使った画像がある場合、速度が異常に遅くなります」
やっぱりですか・・・。すごく便利だったので、カメラ機能を前提にシステムを組んでしまったのが失敗ですね・・・。
Application.Calculationもやっていますが、再計算OFFにしていても遅いので、他にボトルネックがあるのかと思いまして質問しました。

お礼日時:2006/07/09 20:26

「セルへのアクセス」とは再計算の事ですか?


ファイルサイズは?

この回答への補足

VBA的に言えばworksheets("sheet1").cells(1,1)="TEST"を実行すると、ものすごく時間がかかるということです。F8でデバッグを進めていくとも、この行でひっかかります(=時間がかかって、ひっかかった感じになります)

補足日時:2006/07/09 20:27
    • good
    • 0

経験的に、関数満載だとファイルサイズ以上に重くなるようですよ。

    • good
    • 0
この回答へのお礼

さっそくの回答ありがとうございます。
うーん、関数満載だと重いですか・・・。
実はシートの関数が膨大だったので、関数を極力減らしてVBA側で処理しているのです・・・
それでもIF関数(多重ネスト有)が満載です・・・(1ブックで4000個くらいです)。これが悪いのでしょうか。
とても参考になりました。
ありがとうございました。

お礼日時:2006/07/09 14:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!