どうか教えてください.VB6を使用しています。
txtDB.Text = メモリ_ex(W).データこのようなプログラムを途中に入れているのですが、実行すると"インデックスが有効範囲にありません"とエラーが出てしまいます。デバックをするとここに印が出ます。どうすれば解決できるのでしょうか?よろしくお願いします。
有効な範囲のインデックスを指定してください。
としか書けないんだけど…
返信どうもです。すみませんそれはどこで指定すればよいのでしょうか?
VB初心者なもので。よろしくお願いします。
変数、メモリ_ex(W)
の宣言はどのようにしていますか?
Wの値が配列の添え字(インデックス)を超えるために、
エラーとなっています。
例えで言うならば、10リットルの水が入るバケツに
11リットルの水を入れようとしています。
この場合、10リットルのバケツが、宣言した変数
10リットル入っているところに、さらに1リットル入れようとしたのが
貴方の処理です。
とりあえず、Redim関数、および動的配列について調べてみましょう。
変数、メモリ_ex(W)
の宣言はどのようにしていますか?
Wの値が配列の添え字(インデックス)を超えるために、
エラーとなっています。
例えで言うならば、10リットルの水が入るバケツに
11リットルの水を入れようとしています。
この場合、10リットルのバケツが、宣言した変数
10リットル入っているところに、さらに1リットル入れようとしたのが
貴方の処理です。
とりあえず、Redim関数、および動的配列について調べてみましょう。
VB6の場合、配列の添え字にマイナスを宣言出来ることを知らない人が結構多い。
Dim Data(-3 To 10) As Integer
又
Dim Data(3 To 10) As Integer
こんな宣言も出来る。
当然
Data(2) = 5 とすると
"インデックスが有効範囲にありません"
のエラーが出る。
従ってバケツのたとえはちと苦しい。
メモリ_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)
などなど
どのように使ってるのか具体的に書いてもらわないと
正しい解答は書きづらいかもしれませんね
と述べてしまったが・・・
>txtDB.Text = メモリ_ex(W).データ
ということは一度配列に格納しているんですよね?
じゃぁ格納した時に何番から何番まで入っているのかわかるはずです
で・・・
>デバックをするとここに印が出ます
印が出るならWの値が正しいかどうかが判別できるはずです
むしろそれがデバッグです・・・
イミディエイト・ローカル・ウォッチウィンドウをうまく使用すれば確認できます
>VB6の場合、配列の添え字にマイナスを宣言出来ることを知らない人が結構多い。
確かに、結構いるかもね。むしろ知っていた場合は
2番目のレスの
有効な範囲のインデックスを指定してください。
でピンと来ないのは、おかしい。
みなさんありがとうございました。お陰で無事解決することが出来ました。
ありがとうございました。
Excel VBA で
グラフ作成し線のマークを消して太くしたりした後に
シートの左上のセルを選択したいのですが
①Windows(strNewSheetName).Activate
②Cells(1, 1).Select
①のところで「インデックスが有効範囲にありません」と
エラーが出ます。
どうしたら解決できるのでしょうか?
よろしくお願い致します。
strNewSheetNameとシート名が合っていないとか・・・
ツイート | ![]() |