- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBA、ステップモードと結果が異なる)
エクセルVBAでの実行結果が異なる原因と解決方法
このQ&Aのポイント
- エクセルVBAでの実行結果が異なる場合、ステップモードと通常実行の違いが考えられます。ステップモードでは一行ずつ実行されるため、問題が起こりにくいですが、通常実行の場合は連続して実行されるため、結果が異なることがあります。
- 問題が発生する場合、行のずれやセルの値の異常などが起こります。これは、実行速度や処理のタイミングによるものです。特に複雑なプログラムを実行する場合は、注意が必要です。
- 解決するには、以下の方法があります。1つ目は、処理速度を調整することです。遅延処理や待機時間を設定することで、正確な処理が行われるようになります。2つ目は、セルの参照方法を見直すことです。絶対参照や相対参照の適切な設定が必要です。3つ目は、デバッグツールを活用することです。処理の途中結果や変数の値などを確認して、問題の原因を特定することができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ステップインで問題ないうことは、処理が間に合っていないと思われます。 想定ですが、ご例示の変数i,jのバリアント型が気になる(処理速度が落ちる)のですべてInteger型でお試し下さい。
その他の回答 (1)
- bin-chan
- ベストアンサー率33% (1403/4213)
回答No.2
> F8キーを押し続けて一行ずつ実行させたときには問題ないのですが 10×1000×100=100万ですよね。ホントに全部をステップ実行させた? #1さんがおっしゃっているのは dim i,j,k as integer と書いたら dim i as variant,j as variant, k as integer と書いたのと同じなのでダメ。 dim i as integer, j as integer, k as integer ということですよ。
質問者
お礼
>10×1000×100=100万ですよね。ホントに全部をステップ実行させた? 毎回決まって同じところで不具合が生じていたので、その直前の箇所からステップ実行させました。 if i=8 and j=5000 then msgbox "もうすぐ" end if を挟んで、以降をステップで、というやり方です。 型宣言の解説、ありがとうございました。
お礼
変数の型宣言、同じ型なら一括でできるものと思ってました。 一つ一つを整数型で宣言して試したところ、ステップインと同じ、期待通りの転記がなされるようになりました。処理速度の向上も実感できました。変数の型で変わるものなのですね。 ありがとうございました。