「F9」を押して再計算しても通常ではマクロで記載されたものは再計算されません。


Execl2002ユーザ関数でApplication.Volatileを使うと毎回、再計算に時間がかかるので一回だけ再計算する方法を教えてください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/07/05 22:26:47
  • 終了:2006/07/06 09:16:55

ベストアンサー

id:nany No.3

nany回答回数5ベストアンサー獲得回数12006/07/06 04:24:52

ポイント80pt

●[ツール]→[オプション]→計算方法:手動→[OK]で、

[F9]を押したときのみ再計算となります。

 

●マクロの最中に自動計算されるのを防ぐ目的ならば、

 

マクロの先頭に 

Application.Calculation = xlManual

 

マクロの末尾に

Application.Calculation = xlAutomatic

 

を書けばいいと思います。

http://q.hatena.ne.jp/1152106004

id:Setiablue

ずばり問題なく正常な動作しました。当方の意図した質問に、的確で簡潔な回答ありがとうございます。

2006/07/06 09:14:30

その他の回答(2件)

id:nandedarou No.1

nandedarou回答回数230ベストアンサー獲得回数342006/07/06 00:46:15

下記ページの最後の方に書いてあるように、

Application.Volatileでは時間が掛かりすぎる場合があり、

別の方法を選択すべき場合があります。

 

参考

http://www.relief.jp/itnote/archives/001873.php

 

具体的に何をしたいかを書いて頂けると、

具体的に回答できる可能性があります。

id:Setiablue

マクロでデータをあるセルに書き終えたときに

(Rangeなどで2000個近くのデータを書き換える)それに応じてユーザ関数が再計算処理したいのです

2006/07/06 01:14:21
id:nandedarou No.2

nandedarou回答回数230ベストアンサー獲得回数342006/07/06 02:30:49

●やりたいこと

(ア)2000個近くのデータをマクロで書き換え

(イ)書き換えたデータに基づいてユーザ定義関数で計算する

 

(ア)の作業をやっている間は、

(イ)の作業をさせないようにしたい

というわけですよね。

 

●解決方法1

 (イ)もマクロでやる。

 ※ただし、マクロをつくるのが大変ですね。

 

●解決方法2

 (ア)と(イ)を2つのエクセルファイルに分ける。

 (ア)をやっている間は、(イ)のファイルを閉じておけば

 (イ)の再計算に悩まされることはありません。

 

分ける方法を具体例で説明します。

 

マクロでA1に値が書き込まれ

B1セルに =MyFunc(A1)というユーザー定義関数を使用しているとします。

 

先ず、このシートのタブ(見出し)を右クリックして

→[移動またはコピー]をクリック

→移動先ブック名:で[新しいブック]を選択

→[コピーを作成する]にチェックを入れる

→[OK]ボタンをクリック

コピーされたエクセルファイルのA1セルから、

元のエクセルファイルのA1セルを参照する。

 

すなわち、

元のエクセルファイルの名前が、Book1.xls

元のエクセルファイルのシート名が、Sheet1だとすると

=[Book1.xls]Sheet1!$A$1

とコピーされたエクセルファイルのA1セルに書き込むわけです。

 

次に、

元のエクセルファイルの標準モジュールにユーザー定義関数が書いてありますね。

その記述をコピーしたエクセルファイルの標準モジュールにコピーして下さい。

 

そして、

元のエクセルファイルのB1セルの記述を消去します。

 

ここで、一旦2つのファイルを保存して閉じて下さい。

 

次に、元のファイルだけ立ち上げて、

マクロを実行します。

ユーザー定義関数は消しましたので、処理スピードに影響しません。

マクロの処理が終わったら、

コピーしたエクセルファイルを開きます。

ユーザー定義関数が再計算を始めます。

もし始めなかったら、[F9]を押して下さい。

 

以上です。

 

なお、失敗すると大変ですので、

必ずもとのエクセルファイルのバックアップをとってから

やって下さい。

 

わかりにくいところがあるかも知れませんが、

2回までの回答の設定になっているようですので、

後は、他の方のアドバイスを参考にして下さい。

頑張って下さい。

 

http://hatena.ne.jp/ ダミー

id:Setiablue

ファイルを分割するのは、容量など負荷が多く検討できません。

2006/07/06 09:12:42
id:nany No.3

nany回答回数5ベストアンサー獲得回数12006/07/06 04:24:52ここでベストアンサー

ポイント80pt

●[ツール]→[オプション]→計算方法:手動→[OK]で、

[F9]を押したときのみ再計算となります。

 

●マクロの最中に自動計算されるのを防ぐ目的ならば、

 

マクロの先頭に 

Application.Calculation = xlManual

 

マクロの末尾に

Application.Calculation = xlAutomatic

 

を書けばいいと思います。

http://q.hatena.ne.jp/1152106004

id:Setiablue

ずばり問題なく正常な動作しました。当方の意図した質問に、的確で簡潔な回答ありがとうございます。

2006/07/06 09:14:30

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません