インデックスが有効範囲にありませんを解決するには?

解決


ぴぴ  2006-01-17 09:40:02  No: 129575

どうか教えてください.VB6を使用しています。
txtDB.Text = メモリ_ex(W).データこのようなプログラムを途中に入れているのですが、実行すると"インデックスが有効範囲にありません"とエラーが出てしまいます。デバックをするとここに印が出ます。どうすれば解決できるのでしょうか?よろしくお願いします。


ガッ  2006-01-17 10:17:14  No: 129576

有効な範囲のインデックスを指定してください。

としか書けないんだけど…


ぴぴ  2006-01-17 10:45:10  No: 129577

返信どうもです。すみませんそれはどこで指定すればよいのでしょうか?
VB初心者なもので。よろしくお願いします。


なな  2006-01-17 12:04:11  No: 129578

変数、メモリ_ex(W)
の宣言はどのようにしていますか?

Wの値が配列の添え字(インデックス)を超えるために、
エラーとなっています。

例えで言うならば、10リットルの水が入るバケツに
11リットルの水を入れようとしています。

この場合、10リットルのバケツが、宣言した変数
10リットル入っているところに、さらに1リットル入れようとしたのが
貴方の処理です。

とりあえず、Redim関数、および動的配列について調べてみましょう。


なな  2006-01-17 12:04:11  No: 129579

変数、メモリ_ex(W)
の宣言はどのようにしていますか?

Wの値が配列の添え字(インデックス)を超えるために、
エラーとなっています。

例えで言うならば、10リットルの水が入るバケツに
11リットルの水を入れようとしています。

この場合、10リットルのバケツが、宣言した変数
10リットル入っているところに、さらに1リットル入れようとしたのが
貴方の処理です。

とりあえず、Redim関数、および動的配列について調べてみましょう。


ちと苦しい  2006-01-17 17:11:10  No: 129580

VB6の場合、配列の添え字にマイナスを宣言出来ることを知らない人が結構多い。
Dim Data(-3 To 10) As Integer

Dim Data(3 To 10) As Integer
こんな宣言も出来る。
当然
Data(2) = 5 とすると
"インデックスが有効範囲にありません"
のエラーが出る。
従ってバケツのたとえはちと苦しい。


葉月α  2006-01-17 17:59:35  No: 129581

メモリ_ex(W).データ
↑これの宣言部分を記述してもらわないとなんともいえないかも

例えば
Dim メモリ_ex(10) As 型
と宣言していれば
要素Wには0〜10が有効範囲となります

ちと苦しいさんが仰るように範囲で決めることも出来ます
Dim メモリ_ex(2 To 10) As 型
これならば要素Wには2〜10が使用できます

また、最初に決まった配列数を宣言せずに
後で決めることも出来ます
Dim メモリ_ex() As 型
Redim [Preserve] メモリ_ex(10)
などなど

どのように使ってるのか具体的に書いてもらわないと
正しい解答は書きづらいかもしれませんね


葉月α  2006-01-17 18:09:58  No: 129582

と述べてしまったが・・・

>txtDB.Text = メモリ_ex(W).データ
ということは一度配列に格納しているんですよね?
じゃぁ格納した時に何番から何番まで入っているのかわかるはずです

で・・・
>デバックをするとここに印が出ます
印が出るならWの値が正しいかどうかが判別できるはずです
むしろそれがデバッグです・・・

イミディエイト・ローカル・ウォッチウィンドウをうまく使用すれば確認できます


なな  2006-01-17 20:23:29  No: 129583

>VB6の場合、配列の添え字にマイナスを宣言出来ることを知らない人が結構多い。

確かに、結構いるかもね。むしろ知っていた場合は
2番目のレスの
有効な範囲のインデックスを指定してください。
でピンと来ないのは、おかしい。


ぴぴ  2006-01-17 22:27:46  No: 129584

みなさんありがとうございました。お陰で無事解決することが出来ました。
ありがとうございました。


みい  2007-07-09 22:19:29  No: 129585

Excel VBA  で
グラフ作成し線のマークを消して太くしたりした後に
シートの左上のセルを選択したいのですが
①Windows(strNewSheetName).Activate
②Cells(1, 1).Select

①のところで「インデックスが有効範囲にありません」と
エラーが出ます。

どうしたら解決できるのでしょうか?

よろしくお願い致します。


通りすがり・・・  2007-08-15 02:27:20  No: 129586

strNewSheetNameとシート名が合っていないとか・・・


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加