• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBA、ステップモードと結果が異なる)

エクセルVBAでの実行結果が異なる原因と解決方法

このQ&Aのポイント
  • エクセルVBAでの実行結果が異なる場合、ステップモードと通常実行の違いが考えられます。ステップモードでは一行ずつ実行されるため、問題が起こりにくいですが、通常実行の場合は連続して実行されるため、結果が異なることがあります。
  • 問題が発生する場合、行のずれやセルの値の異常などが起こります。これは、実行速度や処理のタイミングによるものです。特に複雑なプログラムを実行する場合は、注意が必要です。
  • 解決するには、以下の方法があります。1つ目は、処理速度を調整することです。遅延処理や待機時間を設定することで、正確な処理が行われるようになります。2つ目は、セルの参照方法を見直すことです。絶対参照や相対参照の適切な設定が必要です。3つ目は、デバッグツールを活用することです。処理の途中結果や変数の値などを確認して、問題の原因を特定することができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

ステップインで問題ないうことは、処理が間に合っていないと思われます。 想定ですが、ご例示の変数i,jのバリアント型が気になる(処理速度が落ちる)のですべてInteger型でお試し下さい。

maina-
質問者

お礼

 変数の型宣言、同じ型なら一括でできるものと思ってました。  一つ一つを整数型で宣言して試したところ、ステップインと同じ、期待通りの転記がなされるようになりました。処理速度の向上も実感できました。変数の型で変わるものなのですね。  ありがとうございました。

その他の回答 (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 ということですよ。

maina-
質問者

お礼

>10×1000×100=100万ですよね。ホントに全部をステップ実行させた? 毎回決まって同じところで不具合が生じていたので、その直前の箇所からステップ実行させました。 if i=8 and j=5000 then msgbox "もうすぐ" end if を挟んで、以降をステップで、というやり方です。 型宣言の解説、ありがとうございました。

関連するQ&A