![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
初めて質問させていただきます。Access勉強中です。
Access VBA 2007 でテーブルのデータを取得した動的配列から、構造体定義した動的配列に入れたいのですが、コンパイルエラーが発生してしまいます。
ネットで調べたのですがわからずじまいで、ここで相談させていただいています。
やりたいことは、テーブルの内容全てを動的配列に入れたい、それだけです。
やり方には固執していませんので、よろしくお願いします。
[コンパイルエラー]
パブリック オブジェクト モジュールで定義されたユーザー定義型に限り、変数に割り当てることができ、実行時バインディングの関数に渡すことができます。
[実際のプログラム]Form内のボタン押下時に実行される
Private Sub btn_Click()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim varRecords As Variant
Dim intRecCnt As Integer
Set db = CurrentDb()
Set rst = db.OpenRecordset(テーブル名称, dbOpenSnapshot)
rst.MoveLast: rst.MoveFirst
intRecCnt = rst.RecordCount
varRecords = rst.GetRows(intRecCnt)
Dim COutRec() As Record
'行ループ
For intRLoop = 0 To UBound(varRecords, 2)
ReDim Preserve COutRec(intRLoop)
'列方向(フィールド)のループ
For intCLoop = 0 To UBound(varRecords, 1)
'配列の各データを配列にセット
COutRec(intRLoop, intCLoop) = varRecords(intCLoop, intRLoop)
Next intCLoop
Next intRLoop
End Sub
[構造体定義]標準モジュール内に定義している
Type Record
A As String
B As String
End Type
No.1ベストアンサー
- 回答日時:
rst で扱うのはフィールド2つだけですよね。
であれば、以下でどうでしょうか。
Type Record
A As String
B As String
End Type
Private Sub btn_Click()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim varRecords As Variant
Dim intRecCnt As Long
Dim i As Long
Dim COutRec() As Record
Set db = CurrentDb()
Set rst = db.OpenRecordset(テーブル名称, dbOpenSnapshot)
rst.MoveLast: rst.MoveFirst
intRecCnt = rst.RecordCount
varRecords = rst.GetRows(intRecCnt)
rst.Close
Set rst = Nothing: Set db = Nothing
ReDim COutRec(intRecCnt - 1)
'行ループ
For i = 0 To intRecCnt - 1
COutRec(i).A = varRecords(0, i)
COutRec(i).B = varRecords(1, i)
Next
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) ExcelVBAで質問です。離れた二次元配列を一つにしたい 4 2022/07/26 19:06
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
- Access(アクセス) アクセス レポートを開いたときにパラメーターの自動入力がしたい 4 2022/11/30 11:21
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
VBScriptでCSVファイルを読み出...
-
コンボボックスのインデックス...
-
C#でbyte配列から画像を表示さ...
-
配列の中の最大値とそのインデ...
-
Redim とEraseの違いは?
-
レコードセットの中身を配列に...
-
EXCEL VBAの課題です
-
エクセルでXY座標に並べられた...
-
構造体配列内の文字列検索のよ...
-
エクセル(VBA)の空白配列の削除...
-
グラフの「項目軸ラベルに使用...
-
free()関数の多用 と Segment...
-
excel vbaの配列なんですが・・・
-
複数のtextboxの処理を一括で行...
-
どこにどの画像が入ったか判定...
-
VBAにて、配列のデータを一度に...
-
Access レコードセットを動的配...
-
大量の変数を定義するにはどう...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
C#でbyte配列から画像を表示さ...
-
vba フィルター 複数条件 3つ以...
-
Dir関数で読み取り順を操作でき...
-
Excel2010のinputboxで複数デー...
-
配列の中の最大値とそのインデ...
-
構造体配列の特定のメンバーをF...
-
COBOLの基本的な事なので...
-
構造体配列内の文字列検索のよ...
-
コンボボックスのインデックス...
-
エクセルでXY座標に並べられた...
-
エクセル(VBA)の空白配列の削除...
-
Redim とEraseの違いは?
-
定数配列の書き方
-
VB6のメモリ解放に関して
-
CheckBoxの配列化
-
複数のtextboxの処理を一括で行...
-
Excelのメモリ(配列)の上限は2G...
-
大量の変数を定義するにはどう...
-
OutOfMemoryExceptionの回避策...
おすすめ情報