• ベストアンサー

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

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

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

よほど変なマクロを組んでいない限り(言葉を換えると,あなたが一体全体どんなマクロを組んだのか不明の現状では,確たる解答など出来ません),問題なく計算は進みます。 例: マクロの実行を開始する マクロが所定の最初のセルに値を記入する そのセルを使った数式が計算される マクロは数式の計算結果を取得し,次のステップを実行する と言った具合に進行します。 心配であれば(若しくは勉強のため)マクロを漫然と実行して「うごいたー失敗したー」と一喜一憂するのではなく,VBE画面で「ステップ実行」を行い,マクロが一行ずつ進行する都度マクロの取得しているセルの値が確かに最新の計算結果となっていることを確認しながら「デバッグ」してください。 実際に自分の手を動かしてデバッグしてみて,その上で「何かおかしな結果」が出ていると確かに確認されたときは,具体的なあなたのマクロと具体的なあなたのシートの数式等をキチンと情報提供して,改めてご相談を投稿し直してみてください。

kkzdaisuke
質問者

お礼

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

その他の回答 (1)

  • prius770c
  • ベストアンサー率35% (91/258)
回答No.2

そのような事はしないはずですが・・・なんだが回りくどい処理してますね。 途中の処理過程を見たいというのは分からなくもないですが、複数の変数を使った方が処理が速いと思いますよ。 たぶん、数百行とか数千行に渡って計算式(関数)を入れていると計算待ちの時間が出てませんか。 文章を読む限りでは、どの程度の複雑さがある計算か分かりませんが3段階に分けて計算されているようなので私なら変数を3つ使ってすべてマクロの中で処理してしまいます。 シートに書き込む処理が無駄に思えてしまうので。 どうしても、途中の値が気になるなら変数の値のみをセルに書き出すというのはありかもしれませんが。 loopやforなどの繰り返し処理を入れて変数の計算をした方がいいと思います。 VBAの中でもワークシート関数を使う事はできますので。

kkzdaisuke
質問者

お礼

 深夜のご解答ありがとうございました。 ステップ実行を試してみます。 変数は、あとで自分でも分からなくなってしまうので、使用を控え気味にしています。  >VBAの中でもワークシート関数を使う事はできますので。 あとで、やり方を調べてみます。 ご解答ありがとうございました。

関連するQ&A