アプリ版:「スタンプのみでお礼する」機能のリリースについて

シュミレーションの結果が合わないのですが

エクセル 列 約70 1パターン6列 の10個と 合計列
行は 約300 300*70= 21.000セル?
セルには 何らかの 式が埋め込まれています。
1パターンの中の列に 手間のかかりそうなのは 1列だけ18行の移動平均があります。他の列は、隣の足し算とか、比較してどうこう・・・(よって 移動平均は 合計10列)

で、このワンパターン に 各パラメーターが有って これを変化させて 再計算して 合計の変化でMAXを 取り出す

プログラムは
c4=0 i4=0 ・・・・10個のパラメーターに初期値代入 
この時点で セルの再計算
do
if max<合計セル then
  do
   Call Sleep(5)
  DoEvents
   z = z + 1
   If z > 5 Then
    Exit Do
   End If
loop
ここに 入れる? 合計セルが遅れて パラメーターが先行してたら意味ないような??
  max=合計セル 
  記録(max、c4.i4・・・・・・)

endif

c4=c4+1 この時再計算
sleepがないと 秒 10回くらい変化する
21.000セルが 10回計算してるとは 思えないのですが?
if c4>6 then
c4=0
i4=i4+1  この時再計算

if i4>6 then
i4=0
o4=o4+1  この時再計算
10個まで同じロジックが続く

ここに sleep を 入れる??

loop

で、問題は sleep を 入れないとき、計算が進んで、別の保存プログラムにパラメータを入れて合計を見るのですが、記録されたパラメーターと合計が合わないのです。
しかし、
MAXが更新されたときの中にブレークポイントを付けて、ストップ状態で(別のことしてたので、かなり止まってた)、保存プログラムにパラメーター代入、合計確認すると合っていました。

で、知りたいのは
再計算とVBAの整合性は エクセルは 取ってくれないのか?
再計算が完了しようが 途中であろうと、VBAだけ お構いなしに ループするのか

はっきりしてるのは パラメータを弄った 後に Sleep入れるのが 最適なのでしょうが、6*6*6*・・・
の仕事量ですから、ここで 0.5秒取られても 合計時間がかかる。

記録の所だけなら、MAXが更新した時だけですから 時間が早いのですが・・・

この辺の状況、ご存知の方が いらっしゃればご教示ください。

A 回答 (2件)

試したわけではありませんが


http://msdn.microsoft.com/ja-jp/library/ff196047 …

セルに値代入後かな?に
(コードを端折られているので特定できません。)
そちらでお考えになってください。
do while Application.CalculationState <> xlDone
sleep 200
loop
で待機

http://msdn.microsoft.com/ja-jp/library/ff821508 …
を余計なイベントが発生しないように適当なところに挟み込む
(必要があるかどうかは、そちらで確認してください)

あと、位取りに「.」を使うのは止めてください。 21,000
余計なところで思考がストップしてしまいました (^_^;)
日本語環境でないPCでしたらご容赦。
    • good
    • 0
この回答へのお礼

陳謝。

なるほど
do while Application.CalculationState <> xlDone
これは、使えそうです。感謝。

お礼日時:2014/03/22 14:10

Sleep入れるより、


Application.ScreenUpdating = False
じゃないですか?

Sleep入れて同期とるぐらいなら、
Application.Calculation = xlCalculationManual
で自動計算止めておいて全部VBAで書くとか。
    • good
    • 0
この回答へのお礼

恐縮です。

表示は実行速度上がりますから、やってみます。
それで、タイミングが取れるか・・・

VBAは 無理でしょう。エクセルの再計算機能をなくすわけですから
一つのパラメーターで 1パターン 6*300 と 合計欄 10*300 で4800セル 書き換えるのですから
VBAの実行速度じゃ・・・・

結局 パラメーター1個代入で 4.800セル再計算するわけですが、VBAは 値の代入だけのループ。瞬時。VBAは 再計算完了まで 待ってくれるのでしょうかね
再計算とVBA 連携 取れてるのが? 分からないのですが

お礼日時:2014/03/22 10:31

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