- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:実行時エラー'9':インデックスが有効範囲にありま)
VBAでテーブルのフィールドをハイフンで分割して格納する方法について
このQ&Aのポイント
- WindowsXPで、Access2002を使用しています。テーブル1のフィールド1の値を、ハイフン区切りで分割して、フィールド2とフィールド3へ格納するVBAを作成しようとしていますが、あと少しのところでエラーになってしまって解決策が見当たりません。
- エラー内容は、「実行時エラー'9':インデックスが有効範囲にありません。」で、下記VBAのrs.Update "フィールド3", ksplit(1)の部分のksplit(1)の格納場所が無かった為に発生していると思います。実際、その部分を無効にすると、エラーは無くなりますが、フィールド3のデータも必要です。
- 解決策としては、rs.Update "フィールド3", ksplit(1)の前にksplit配列の要素数が2以上かどうか確認するコードを追加することです。もし要素数が2未満ならエラーメッセージを表示し、無効なデータ処理をスキップするようにします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Splitで登録される ksplit のサイズは Ubound で調べられます これは、その配列の添え字の最大値を返します つまり、 10-100なら、Ubound(ksplit)は、1が返ります つまり(0),(1)が参照できるわけです 10なら、Ubound(ksplit)は、0が返ります 同様に(0)1つだけが参照できるわけです >ksplit(1)の格納場所が無かった為に発生していると思います。 無いことがわかるはずですから、対処の方法はわかると思います ヒントはここまで!
その他の回答 (1)
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
回答No.2
Splitで区切ってみたら、データの中に「-」が無くて、ksplit(0)にだけ結果が返って来ただけの話でしょう。 「-」だと思ってたら実は「ー」だったとか、文字が違っているのでしょう。 と言うか、フィールド1に、「-」が入ってないデータがあった時の対処を何もしてないのが悪いです。
質問者
お礼
ご回答ありがとうございます。 split関数、そしてvbaに関して、あまり理解できていなかったので、基本的な事が抜けていたようでした。
お礼
ご回答ありがとうございます。 そして、重要なヒントありがとうございました。 お蔭様で、すぐに解決する事ができました。 Uboundの存在を知らなかったので、大変勉強になりました。