はじめまして。
大変恐れ入りますが、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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
-
-
4
Excelでマクロ設定したが反映されない(初心者です)
Excel(エクセル)
-
5
Excelの条件付き書式設定の太い罫線
Excel(エクセル)
-
6
ExcelVBAでセルを編集状態にする方法
Excel(エクセル)
-
7
エクセルの関数 ENTERを押さないと反映されない。
Excel(エクセル)
-
8
エクセルファイルをオープンしたときの再計算について
Excel(エクセル)
-
9
特定のシートのみ再計算させない方法は?
Excel(エクセル)
-
10
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
11
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
12
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
13
自作マクロをセルの色が変わる度に再計算させるには
Word(ワード)
-
14
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
15
VBA 数値を文字列として貼付したい
Excel(エクセル)
-
16
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
17
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
-
18
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
-
19
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
20
VBAでの Replace関数で、ワイルドカードは使えないのでしょうか?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
バッチファイルでウインドウを...
-
変化させるセルが変化しない
-
排他的論理和 BCC(水平パリテ...
-
骨折リスク評価のFRAXについて...
-
傾いた四角形内の範囲の条件式
-
タクシー料金の問題です
-
C++言語で、レナードジョーン...
-
計算式の文字列を解析して自分...
-
EXCELなどで「返す」という表現
-
べき乗の計算が遅い理由
-
数値計算の高速化 (cos, sin, exp)
-
ExcelのマクロVBA動作を軽くす...
-
prolog計算
-
CCurの引値を文字列にする時と...
-
VBAの再計算が反映されない件に...
-
Excel VBA TREND関数について
-
順列のプログラムについて(VB)
-
C言語初心者。静磁場の計算。台...
-
エクセルで特定のセルのみを任...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
排他的論理和 BCC(水平パリテ...
-
EXCELなどで「返す」という表現
-
バッチファイルでウインドウを...
-
モジュラス103の計算とは何でし...
-
傾いた四角形内の範囲の条件式
-
Visual C++でdebugとreleaseで...
-
変化させるセルが変化しない
-
骨折リスク評価のFRAXについて...
-
C# 計算処理中に実行中ウィン...
-
VBAでの勤務時間計算
-
べき乗の計算が遅い理由
-
C言語についてです。 再帰を使...
-
Excel VBAにてFFT
-
数値計算の高速化 (cos, sin, exp)
-
VBとVBAの違い
-
VB6で正確なミリ秒を計測したい...
-
スレッド処理からダイアログを...
-
matlabで計算終了
おすすめ情報