• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:プログラムのバグについて)

プログラムのバグについて

このQ&Aのポイント
  • 下記のプログラムを書いたのですがi=32000の時x(i,r)の値がEmptyになってしまいます。
  • その理由はなぜでしょうか?
  • どうしてもわからずに困っています。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

原因は#1でお答えの個所かと思うが、 こんな公のところへ質問するなら xr(i, r) = Cells(i - 1, r) のようにエクセルシートのセルの値を参照・代入しているのだから、その辺(セルの値)もチェックして(説明しないと)セルが空白ならそれが配列の値になる可能性もあり当たり前の議論になってしまうこともあるでしょう。 実行時のIFステートメント判別順序は、コードの出現の上の方からのはずなので、質問のコードは(パッと目で)判りにくい。 2の判別がきて、1の判決がきて・・など ーー 上から i=1の時 i=2の時 i>2の時 i<=30000 i>30000 以上など、見通をよくする点jから、区切りの数の大小順序に沿って!、すっきり書くべきではないですか。 判り易さから言えば、少し重複が出ても、可能な場合なら、AND演算子も使わないで、判別のコードを書いておくのも手ではないですか。

yakyuuoh
質問者

お礼

ありがとうございました。解決しました。

その他の回答 (2)

  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.2

回答ではありません(質問内容に突っ込みどころが満載なので理解自体ができません) ・x(i,r)ってどれのこと? ・xi/xr 変数がありますがこれは配列ですか?     配列の場合確保サイズはどうなっていますか? ・rの値はどうなっているのでしょうか? ・Emptyになって とはどういう意味?   (xr/xi には値の代入してると思いますが値でEmpty(空)って意味が分かりません)

yakyuuoh
質問者

お礼

すみません。情報不足でした

  • samtomsan
  • ベストアンサー率55% (1060/1897)
回答No.1

> ElseIf i > 1 <> i <= 30001 Then 何をしたいのか????です。下記の間違いでしょうか。 ElseIf i > 1 And i <= 30001 Then (1以上且つ30001かそれ以下) 「i=32000の時x(i,r)の値がEmpty」とは関係しないようですが、30002の書き間違いでしょうか。

yakyuuoh
質問者

お礼

回答ありがとうございます。違います。