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

Windows NTでExcel 2000を使っています。
Excel VBAでユーザー定義関数を作り、いろんな場合分けで計算できるようになったのはいいのですが、自動計算の Application.Volatile を文頭に置いているので操作のたびに再計算をして動作が遅くなってしまいました。この関数を使ったファイルに時間がかかるのは仕方ないことでも使っていないファイルまでたびたび再計算されてしまうのではさすがに困ってしまいます。数値を変更したときなど、自分の都合に合わせて再計算ができるようにならないものでしょうか。
他の方の質問を見たところ、文頭に手動化の文を置いて、最後に自動化の文を置くようアドバイスしてありましたがこれではファイルを閉じない限り再計算されないのではないかと心配になり、質問をしてみました。よろしくお願いします。(この文頭を持ったファイルを複数開いて作業しているのも関係あるのでしょうか?)

A 回答 (2件)

EXcel2000は使ったこと無いのですが、97で私が使用している方法は、次のようなものです。


(1)文頭に Application.Calculation = xlCalculationManual(手動化)を置く。
(2)計算させたい個所に、Application.Calculate(再計算)を置く。
(3)文末に Application.Calculation = xlCalculationAutomatic(自動化)を置く。
これで手動化のまま再計算されるはずです。

この回答への補足

解答ありがとうございます。
ただちょっとわからないのは(2)の「計算させたい個所」とは具体的にどのあたりなのでしょうか?
計算式はIF構文とSelect Case…を組み合わせて作っているのですが
End Selectのたびに(2)を使えばよいのでしょうか?
お手数ですがよろしくお願いします。

補足日時:2001/11/29 10:11
    • good
    • 0

どの時点で再計算が必要になるかによります。



IF構文とSelect Caseをお使いとのことですが、この構文の中でセルに数値を入力する作業をしている場合、それにより変更された計算結果を構文の中で必要としているのでなければEnd Selectの後ろでいいと思います。

計算結果を必要とするまで、むだな再計算を用いなくて済むようプログラミングすることが大切であろうと思います。
    • good
    • 0
この回答へのお礼

ありがとうございました。とても参考になりました。
プログラミングについては必要個所だけかじった初心者なので
構文に必要・不必要の判断がまだまだ難しいのですが
これから色々勉強して使えるプラグラムを組めるようになりたいです。

お礼日時:2001/11/29 13:03

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