- ベストアンサー
プログラムのバグについて
- 下記のプログラムを書いたのですがi=32000の時x(i,r)の値がEmptyになってしまいます。
- その理由はなぜでしょうか?
- どうしてもわからずに困っています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
原因は#1でお答えの個所かと思うが、 こんな公のところへ質問するなら xr(i, r) = Cells(i - 1, r) のようにエクセルシートのセルの値を参照・代入しているのだから、その辺(セルの値)もチェックして(説明しないと)セルが空白ならそれが配列の値になる可能性もあり当たり前の議論になってしまうこともあるでしょう。 実行時のIFステートメント判別順序は、コードの出現の上の方からのはずなので、質問のコードは(パッと目で)判りにくい。 2の判別がきて、1の判決がきて・・など ーー 上から i=1の時 i=2の時 i>2の時 i<=30000 i>30000 以上など、見通をよくする点jから、区切りの数の大小順序に沿って!、すっきり書くべきではないですか。 判り易さから言えば、少し重複が出ても、可能な場合なら、AND演算子も使わないで、判別のコードを書いておくのも手ではないですか。
その他の回答 (2)
- koi1234
- ベストアンサー率53% (1866/3459)
回答ではありません(質問内容に突っ込みどころが満載なので理解自体ができません) ・x(i,r)ってどれのこと? ・xi/xr 変数がありますがこれは配列ですか? 配列の場合確保サイズはどうなっていますか? ・rの値はどうなっているのでしょうか? ・Emptyになって とはどういう意味? (xr/xi には値の代入してると思いますが値でEmpty(空)って意味が分かりません)
お礼
すみません。情報不足でした
- samtomsan
- ベストアンサー率55% (1060/1897)
> ElseIf i > 1 <> i <= 30001 Then 何をしたいのか????です。下記の間違いでしょうか。 ElseIf i > 1 And i <= 30001 Then (1以上且つ30001かそれ以下) 「i=32000の時x(i,r)の値がEmpty」とは関係しないようですが、30002の書き間違いでしょうか。
お礼
回答ありがとうございます。違います。
お礼
ありがとうございました。解決しました。