人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

●質問者: Setiablue
●カテゴリ:コンピュータ インターネット
✍キーワード:application マクロ ユーザ 計算 関数
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● nandedarou
●0ポイント

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

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

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

参考

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

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

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

◎質問者からの返答

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

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


2 ● nandedarou
●0ポイント

●やりたいこと

(ア)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/ ダミー

◎質問者からの返答

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


3 ● nany
●80ポイント ベストアンサー

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

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

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

マクロの先頭に

Application.Calculation = xlManual

マクロの末尾に

Application.Calculation = xlAutomatic

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

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

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ