小さい会社の1人SEの開発記というか奮戦記

  1. Access
  2. 667 view

動的配列とReDim Preserve を使う【VBA】

データベースと連携してVBAを組んでいくと、都度検索に行くのが良いか、最初に読み込んで配列に保管、都度配列からFunctionで引っ張るのが良いのか悩む場合がありますよね。今回は配列に動的に値を保存する方法をまとめます。

やりたいこと

あるテーブルを開始行から最終行まで読み込み、読み込んだ行数で配列を拡張して、特定のカラムのデータを配列に保存する。

基本になる配列の操作

  1. 動的配列を使用する場合は要素数を指定せず、カッコだけで宣言する
    Dim TXT_HAIRETSU()
  2. 要素数を指定する場合は ReDim を使って宣言する。
    ReDim TXT_HAIRETSU(1)
    TXT_HAIRETSU(0) = “AAAAA”
    TXT_HAIRETSU(1) = “BBBBB”
  3. 拡張する場合、ReDim だけでは事前に格納したデーターがクリアされてしまうので ReDim Preserve を使う
    ReDim Preserve TXT_HAIRETSU(3) ’ ← 配列 0, 1 の値は保存されている
    TXT_HAIRETSU(2) = “CCCCC”
    TXT_HAIRETSU(3) = “DDDDD”

プログラムのイメージ

色々なところから引っ張ることを考えると、Public で宣言した方がいいかと・・・。

Public Dim TXT_HAIRETSU() As String
I = 0
Do Until レコードセット.EOF
I = I + 1
ReDim Preserve TXT_HAIRETSU(1, I)
TXT_HAIRETSU(0, I)=レコードセット(0)
TXT_HAIRETSU(1, I)=レコードセット(1)
レコードセット.MoveNext
Loop

配列を使用する

Function を使って、検索条件を渡し、配列を For ~ Next を使って検索する。値が合致したら返り値を設定し Exit For を使ってループを抜ける

まとめ

データベースに都度アクセスするのはどうしても時間がかかってしまいます。読み替え表的な内容は配列を作ってメモリ上にマップしてしまう方が高速に処理できます

 

Accessの最近記事

  1. Accessの数値型ではまる・・・。

  2. クエリで日付から曜日を算出する。【Access】

  3. クエリのLikeをバイナリーモードで処理したい【Access】

  4. アクセスのマクロ機能を初心者に解説【Access】

  5. NZ関数でNullを上手く使う【Access】

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


お薦め書籍

最近の記事

  1. Access

    Accessの数値型ではまる・・・。
  2. Excel

    日本語をエンコードする【Excel VBA】
  3. Access

    クエリで日付から曜日を算出する。【Access】
  4. PCパーツ

    ASUS AMD Ryzen 4000 シリーズ搭載小型ベア…
  5. Microsoft365

    コンデジをTeamsのWebカメラに使う
  6. SQL Server

    SQL文で今日から7日前までを指定する