
はじめまして。
大変恐れ入りますが、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件)
- 最新から表示
- 回答順に表示
No.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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) Excelで時間計算(負) 8 2023/02/26 05:47
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Excel(エクセル) エクセルでの左のセルのコピー 3 2022/07/25 12:31
- Excel(エクセル) エクセル・スプレッドシートで、一定数を超えたらゼロから再累計する方法 8 2022/05/28 03:52
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- Excel(エクセル) EXCELピボットテーブル関数について 2 2023/04/10 20:35
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- HTML・CSS CSS上での計算を行うためのルールについて教えてください。 3 2022/08/15 14:43
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
VBAの計算結果が表示されない
Excel(エクセル)
-
エクセル自作関数の再計算
Excel(エクセル)
-
-
4
Excelでマクロ設定したが反映されない(初心者です)
Excel(エクセル)
-
5
VBA プロシージャの名前の取得
その他(Microsoft Office)
-
6
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
9
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
10
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
11
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
12
エクセルの関数 ENTERを押さないと反映されない。
Excel(エクセル)
-
13
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
14
特定のシートのみ再計算させない方法は?
Excel(エクセル)
-
15
エクセルファイルをオープンしたときの再計算について
Excel(エクセル)
-
16
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
17
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
18
Excelの反復計算がわかりません。
その他(Microsoft Office)
-
19
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
20
EXCEL VBA マクロ 実行する度に処理速度がどんどん遅くなる原因が知りたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
排他的論理和 BCC(水平パリテ...
-
VBAの再計算が反映されない件に...
-
エクセルで特定のセルのみを任...
-
指定した数のます目の合計値が...
-
65536は2の何乗なのでしょうか?
-
数値計算の高速化 (cos, sin, exp)
-
EXCELなどで「返す」という表現
-
駅間の距離を求め運賃計算するJ...
-
CRC8を教えてください
-
C#の演算でオーバーフローして...
-
0xf0=256?
-
バッチファイルでウインドウを...
-
モジュラス103の計算とは何でし...
-
Visual C++でdebugとreleaseで...
-
理由がわかりません・・・
-
VBでReplace
-
matlabで計算終了
-
for文である数の倍数になるまで...
-
Nの階乗
-
時間の足し算 C++Builder
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
排他的論理和 BCC(水平パリテ...
-
EXCELなどで「返す」という表現
-
バッチファイルでウインドウを...
-
エクセルで特定のセルのみを任...
-
matlabで計算終了
-
モジュラス103の計算とは何でし...
-
変化させるセルが変化しない
-
数値計算の高速化 (cos, sin, exp)
-
CとFORTRANの計算速度はどちら...
-
モジュロ
-
スレッド処理からダイアログを...
-
時間(ミリ秒を含む)の引き算
-
VB6で正確なミリ秒を計測したい...
-
60進数の四則計算
-
PHPとJavaでSHA256の結果を同じ...
-
C言語についてです。 再帰を使...
-
なぜオーバーフローになるので...
-
VBA入力フォームで労働時間の計...
おすすめ情報