WindowsXPで、Access2002を使用しています。
テーブル1のフィールド1の値を、ハイフン区切りで分割して、フィールド2とフィールド3へ格納するVBAを作成しようとしていますが、あと少しのところでエラーになってしまって解決策が見当たりません。
エラー内容は、「実行時エラー'9':インデックスが有効範囲にありません。」で、下記VBAの
rs.Update "フィールド3", ksplit(1)
の部分のksplit(1)の格納場所が無かった為に発生していると思います。
実際、その部分を無効にすると、エラーは無くなりますが、フィールド3のデータも必要です。
このようになって欲しいです。
例)
テーブル1
フィールド1 フィールド2 フィールド3
1000-100 1000 100
50-301 50 301
Private Sub コマンド0_Click()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = CurrentProject.Connection
Set rs = New ADODB.Recordset
rs.Open "テーブル1", cn, adOpenKeyset, adLockOptimistic
Do Until rs.EOF
Dim ksplit As Variant
ksplit = Split(rs!フィールド1, "-")
rs.Update "フィールド2", ksplit(0)
rs.Update "フィールド3", ksplit(1)
Debug.Print rs!フィールド2,rs!フィールド3
rs.MoveNext
Loop
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing
End Sub
以上、初心者で、行き詰っておりますので、よろしくお願いします。
No.1ベストアンサー
- 回答日時:
Splitで登録される ksplit のサイズは
Ubound で調べられます
これは、その配列の添え字の最大値を返します
つまり、
10-100なら、Ubound(ksplit)は、1が返ります
つまり(0),(1)が参照できるわけです
10なら、Ubound(ksplit)は、0が返ります
同様に(0)1つだけが参照できるわけです
>ksplit(1)の格納場所が無かった為に発生していると思います。
無いことがわかるはずですから、対処の方法はわかると思います
ヒントはここまで!
ご回答ありがとうございます。
そして、重要なヒントありがとうございました。
お蔭様で、すぐに解決する事ができました。
Uboundの存在を知らなかったので、大変勉強になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
INT64対応のprintf系関数はあり...
-
テーブルのデータ型の変更がで...
-
accessでフィールド追加のあと...
-
実行時エラー'9':インデックス...
-
エラー'ASP0115'が発生して・・・
-
DataGridViewでのデータ抽出に...
-
Access VBA 添付型フィールド
-
2つ目のレコードの値を取得す...
-
Access 2010で実行時エラー3061
-
クリスタルレポートで困ってい...
-
Accessの画像挿入のVBAコード
-
ACCESSデータベースにV...
-
クリスタルレポートで文字列の...
-
AccessのDAOでフィールド名を配...
-
ACCESSで視覚的タイムテーブル...
-
アクセスでADO 並べ替えが適用...
-
ADOでNullフィールドの抽出
-
ACCESSで日別集計をする場合
-
VBA 変数名に変数を使用したい。
-
テキストボックの文字を一行ず...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
accessでフィールド追加のあと...
-
Accessのフィールド名に半角括...
-
INT64対応のprintf系関数はあり...
-
テキストファイルのフィールド...
-
2つ目のレコードの値を取得す...
-
DataTableに特定のフィールドが...
-
Access 2010で実行時エラー3061
-
Access VBA 添付型フィールド
-
日付と文字列を条件としてDLook...
-
AccessのDAOでフィールド名を配...
-
ACCESSで日別集計をする場合
-
Accessの画像挿入のVBAコード
-
アクセスでADO 並べ替えが適用...
-
クリスタルレポートで文字列の...
-
オートナンバー型を抽出条件に...
-
テーブルのデータ型の変更がで...
-
ACCESSデータベースにV...
-
ADOでNullフィールドの抽出
-
Access クエリで変数を参照する...
-
AccessVBAで他テーブルのデータ...
おすすめ情報