• ベストアンサー
※ 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未満ならエラーメッセージを表示し、無効なデータ処理をスキップするようにします。

質問者が選んだベストアンサー

  • ベストアンサー
  • joqr
  • ベストアンサー率18% (742/4026)
回答No.1

Splitで登録される ksplit のサイズは Ubound で調べられます これは、その配列の添え字の最大値を返します つまり、 10-100なら、Ubound(ksplit)は、1が返ります つまり(0),(1)が参照できるわけです 10なら、Ubound(ksplit)は、0が返ります 同様に(0)1つだけが参照できるわけです >ksplit(1)の格納場所が無かった為に発生していると思います。 無いことがわかるはずですから、対処の方法はわかると思います ヒントはここまで!

upsong
質問者

お礼

ご回答ありがとうございます。 そして、重要なヒントありがとうございました。 お蔭様で、すぐに解決する事ができました。 Uboundの存在を知らなかったので、大変勉強になりました。

その他の回答 (1)

回答No.2

Splitで区切ってみたら、データの中に「-」が無くて、ksplit(0)にだけ結果が返って来ただけの話でしょう。 「-」だと思ってたら実は「­­­­ー」だったとか、­­­文字が違っているのでしょう。 と言うか、­フィールド1に、「-」が入ってないデータがあった時の対処を何もしてないのが悪いです。

upsong
質問者

お礼

ご回答ありがとうございます。 split関数、そしてvbaに関して、あまり理解できていなかったので、基本的な事が抜けていたようでした。

関連するQ&A