シュミレーションの結果が合わないのですが
エクセル 列 約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が更新した時だけですから 時間が早いのですが・・・
この辺の状況、ご存知の方が いらっしゃればご教示ください。
No.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でしたらご容赦。
陳謝。
なるほど
do while Application.CalculationState <> xlDone
これは、使えそうです。感謝。
No.1
- 回答日時:
Sleep入れるより、
Application.ScreenUpdating = False
じゃないですか?
Sleep入れて同期とるぐらいなら、
Application.Calculation = xlCalculationManual
で自動計算止めておいて全部VBAで書くとか。
恐縮です。
表示は実行速度上がりますから、やってみます。
それで、タイミングが取れるか・・・
VBAは 無理でしょう。エクセルの再計算機能をなくすわけですから
一つのパラメーターで 1パターン 6*300 と 合計欄 10*300 で4800セル 書き換えるのですから
VBAの実行速度じゃ・・・・
結局 パラメーター1個代入で 4.800セル再計算するわけですが、VBAは 値の代入だけのループ。瞬時。VBAは 再計算完了まで 待ってくれるのでしょうかね
再計算とVBA 連携 取れてるのが? 分からないのですが
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルでの左のセルのコピー 3 2022/07/25 12:31
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) エクセルで計算結果が0でないときのみセルを更新したい 4 2022/07/30 11:58
- Excel(エクセル) IFERROR(IF()IF())のような形の構文が作れません 2 2023/02/05 17:51
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- 会計ソフト・業務用ソフト Excel IF構文内の計算式を有効にする方法 2 2023/03/22 11:27
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Excel(エクセル) エクセル 自動計算 1 2023/01/30 13:28
- Excel(エクセル) SUBTOTAL SUMIF?? 2 2023/03/16 11:25
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# 計算処理中に実行中ウィン...
-
排他的論理和 BCC(水平パリテ...
-
エクセル以外で麻雀の成績を管...
-
VBAの再計算が反映されない件に...
-
加速度から変位の変換について
-
VB6.0で時間の計算方法
-
モジュラス103の計算とは何でし...
-
CとFORTRANの計算速度はどちら...
-
fortran 掃き出し法で逆行列
-
変化させるセルが変化しない
-
なぜオーバーフローになるので...
-
BASICのプログラムで行列式の積...
-
65536は2の何乗なのでしょうか?
-
数十万番目の素数を表示させる...
-
matlab計算での進捗状況を知りたい
-
移動平均を計算するプログラム
-
C言語で電卓を作成する。修正お...
-
数値計算の高速化 (cos, sin, exp)
-
傾いた四角形内の範囲の条件式
-
引き放し法による除算アルゴリ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
パソコン
-
VBAで関数をつくる
-
階乗のマクロ
-
EXCELなどで「返す」という表現
-
排他的論理和 BCC(水平パリテ...
-
バッチファイルでウインドウを...
-
変化させるセルが変化しない
-
VBAの再計算が反映されない件に...
-
引き放し法による除算アルゴリ...
-
Visual C++でdebugとreleaseで...
-
モジュラス103の計算とは何でし...
-
エクセルで特定のセルのみを任...
-
傾いた四角形内の範囲の条件式
-
数値計算の高速化 (cos, sin, exp)
-
骨折リスク評価のFRAXについて...
-
VBでReplace
-
アドオン利率を実質年率に変換
-
入射角反射角
-
C言語についてです。 再帰を使...
おすすめ情報