こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBAのプログラムとシートでの計算の速度

 現在、エクセルVBAでマクロを組んでいます。
マクロで算出した値を、セルを指定して、シートに代入しています。シートの代入する理由は、途中の計算結果の確認とエクセル関数を利用し、マクロの簡便化を図りたいためです。
 代入した値を基にして、エクセル関数を使った結果の値を、他のセルに表示(代入)していますが、VBAで、その結果の値を、利用しています。
 お聞きしたいのは、最初にシートに代入してから、エクセル関数の結果を得られる前に、VBAが、値を取得しないかどうか心配です。
 素人考えでは、同じエクセル上で動作しているので、エクセル関数の計算終了後に、VBAが動くと思いますが。どうでしょうか?

投稿日時 - 2011-09-19 00:07:02

QNo.7020066

暇なときに回答ください

質問者が選んだベストアンサー

よほど変なマクロを組んでいない限り(言葉を換えると,あなたが一体全体どんなマクロを組んだのか不明の現状では,確たる解答など出来ません),問題なく計算は進みます。

例:
マクロの実行を開始する
マクロが所定の最初のセルに値を記入する
そのセルを使った数式が計算される
マクロは数式の計算結果を取得し,次のステップを実行する

と言った具合に進行します。




心配であれば(若しくは勉強のため)マクロを漫然と実行して「うごいたー失敗したー」と一喜一憂するのではなく,VBE画面で「ステップ実行」を行い,マクロが一行ずつ進行する都度マクロの取得しているセルの値が確かに最新の計算結果となっていることを確認しながら「デバッグ」してください。
実際に自分の手を動かしてデバッグしてみて,その上で「何かおかしな結果」が出ていると確かに確認されたときは,具体的なあなたのマクロと具体的なあなたのシートの数式等をキチンと情報提供して,改めてご相談を投稿し直してみてください。

投稿日時 - 2011-09-19 00:35:11

お礼

深夜のご回答ありがとうございます。
ステップ実行の方法がありました。
エクセル関数は、単純な四則演算です。変数を使った方が計算は速いだろうなと思っていましたが、マクロの流れが、自分でも決定していないので、あとで書きなおすときに参考になるかと思い、シートに値を代入しています。
 深夜にもかかわらずご解答ありがとうございました。

投稿日時 - 2011-09-19 01:12:59

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

そのような事はしないはずですが・・・なんだが回りくどい処理してますね。

途中の処理過程を見たいというのは分からなくもないですが、複数の変数を使った方が処理が速いと思いますよ。
たぶん、数百行とか数千行に渡って計算式(関数)を入れていると計算待ちの時間が出てませんか。

文章を読む限りでは、どの程度の複雑さがある計算か分かりませんが3段階に分けて計算されているようなので私なら変数を3つ使ってすべてマクロの中で処理してしまいます。
シートに書き込む処理が無駄に思えてしまうので。
どうしても、途中の値が気になるなら変数の値のみをセルに書き出すというのはありかもしれませんが。

loopやforなどの繰り返し処理を入れて変数の計算をした方がいいと思います。
VBAの中でもワークシート関数を使う事はできますので。

投稿日時 - 2011-09-19 00:45:11

お礼

 深夜のご解答ありがとうございました。
ステップ実行を試してみます。
変数は、あとで自分でも分からなくなってしまうので、使用を控え気味にしています。

 >VBAの中でもワークシート関数を使う事はできますので。

あとで、やり方を調べてみます。

ご解答ありがとうございました。

投稿日時 - 2011-09-19 01:18:47

あなたにオススメの質問