二つのデータを比較して、同じだった場合、片方のデータの配列番号を取得するという処理がしたいのですがうまくいきません。
Khpic()には80個の文字データ、SkeyD()には5〜10個の文字データがはいっています。MaxはKhpic()のデータ数、sMaxはSkeyD()データ数です。
どこが間違っているのか自分では良くわかりません。
For I = 1 To Max
For K = 1 To sMax
If Khpic(I) = SkeyD(K) Then
Fnum(J) = I
J = J + 1
End If
Next K
Next I
>>処理がしたいのですがうまくいきません。
何が、どううまくいかないのかもうチョット知りたいところですが、
ひとまず、このサンプルでは、"インデックスが有効範囲にありません。"
の実行時エラーとなってしまいませんか?
If Khpic(I) = SkeyD(K) Then
Fnum(J) = I
J = J + 1
End If
の部分を
If Khpic(I) = SkeyD(K) Then
Redim Preserve Fnum(J)
Fnum(J) = I
J = J + 1
End If
とするとか?
いなさん、回答ありがとうございます。
確かに、"インデックスが有効範囲にありません。"
となります。回答にあったようにしてみたのですが、”配列はすでに宣言されています。”となってしまいます。
"インデックスが有効範囲にありません。"となる原因は何なのでしょうか?
For文の使い方が間違っているのでしょうか?
いなさん、回答ありがとうございます。
確かに、"インデックスが有効範囲にありません。"
となります。回答にあったようにしてみたのですが、”配列はすでに宣言されています。”となってしまいます。
"インデックスが有効範囲にありません。"となる原因は何なのでしょうか?
For文の使い方が間違っているのでしょうか?
いなさん、回答ありがとうございます。
確かに、"インデックスが有効範囲にありません。"
となります。回答にあったようにしてみたのですが、”配列はすでに宣言されています。”となってしまいます。
"インデックスが有効範囲にありません。"となる原因は何なのでしょうか?
For文の使い方が間違っているのでしょうか?
いなさん、回答ありがとうございます。
確かに、"インデックスが有効範囲にありません。"
となります。回答にあったようにしてみたのですが、”配列はすでに宣言されています。”となってしまいます。
"インデックスが有効範囲にありません。"となる原因は何なのでしょうか?
For文の使い方が間違っているのでしょうか?
いなさん、回答ありがとうございます。
確かに、"インデックスが有効範囲にありません。"
となります。回答にあったようにしてみたのですが、”配列はすでに宣言されています。”となってしまいます。
"インデックスが有効範囲にありません。"となる原因は何なのでしょうか?
For文の使い方が間違っているのでしょうか?
環境は[VB6.0]でいいでしょうか?[VB.NET]の場合とコードが違います。
質問する時点で明記して下さい。
>回答にあったようにしてみたのですが、”配列はすでに宣言されています。”となってしまいます。
ヘルプを『配列は既に宣言されています』のキーワードで検索して下さい。
(漢字もエラーの通りで検索して下さい)
>"インデックスが有効範囲にありません。"となる原因は何なのでしょうか?
ヘルプを『インデックスが有効範囲にありません』のキーワードで検索して
下さい。
>どこが間違っているのか自分では良くわかりません。
1行ずつステップ実行して自分の書いたコードがどういう動き
をしてるか確かめないと分かるものではありません。
自分ができる事を質問しないようにして下さい。
ああ、あと、常識だと思うので既にやっているとは思いますが、
管理人さんにメールして重複投稿を削除してもらって下さい。
"インデックスが有効範囲にありません。"となる原因は何なのでしょうか?
配列のインデックス(要素数)を超えたものを参照しようとした場合に発生します。
先のサンプルの場合、
インデックス(J)をインクリメント(+1)しているのにかかわらず、
配列のインデックスはRedimされていないため、
いずれ破綻するだろうと思ったわけです。
ツイート | ![]() |