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

はじめまして。
大変恐れ入りますが、1つお伺いさせてください。

VBAにて計算結果が反映されない事象が発生しています。
コードは下記の通りです。
===
Application.Calculation = xlCalculationManual
For i = iFR To iTO Step iST
Range(iCL) = i 'パラメータ設定
Application.CalculateFullRebuild
変数 = Cells(現在行, 1) '計算結果を変数/セル等に代入
Next
===
要は、一旦高速化のために、Manualにしてから
再計算(計算結果がおかしくなるのを防ぐため
すべての関係性をリセットした計算)
して、任意の値をセルに書き込みます。

しかし、上記のCalculateFullRebuildの計算結果がセルに反映されない事象が発生しています。
おかしいなと思って、デバッグでF8を押しっぱなしにすると、確かに計算されない時があります。

気持ち、CalculateFullRebuildのあとで、F8を押すのを待つと、正しく反映されるようです。

これは高速すぎて、Excelのセル反映が間に合わないために生じる現象なのでしょうか?それとも計算エンジンの問題でしょうか?

正直とても困っています。
どなたか同じ体験をされた方、有識者の方、教えて頂ければ幸いです。

宜しく御願い申し上げます。

追伸:簡単ではりますが、環境を記述させて頂きました。
===
Core2Duo、メモリ2GB
Excel 2007 SP1のVBA
===

A 回答 (1件)

Application.CalculateFullRebuild


でやるよりも そのシートのEnableCalclationを設定した方が良いでしょう

Application.Calculation = xlCalculationManual
For i = iFR To iTO Step iST
  Range(iCL) = i 'パラメータ設定
  'Application.CalculateFullRebuild
  ActiveSheet.EnableCaulculation = False
  ActiveSheet.EnableCaulculation = True
  変数 = Cells(現在行, 1) '計算結果を変数/セル等に代入
Next
といった具合で ・・・

Application.CalculateFullRebuild
はたぶん非同期で実行されるのではないかと思います

なおActiveSheetは他のsheetなどなら適宜修正してください

この回答への補足

すみません、ご回答ありがとうございます!

おお、すごい。
実は、非同期は可能性は僕も薄々と疑ってたんです。
ただ、それを記述したドキュメントが探した限り
力不足で見当たらなかったんです。。。

大変お手数ですが、redfox63様はどこでそうお考えになったか、
教えていただければすごくうれしいです。m(_ _)m

補足日時:2008/11/03 15:55
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A