0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Access VBA】配列

Posted at

はじめに

C#でアプリ開発を行っていたエンジニアが、半年にわたるAccess案件で学んだことをまとめています。
今回はAccessVBAでの配列についてまとめます。

⋙Dictionary

Dim dic As Dictionary
Set dic = New Dictionary
dic.add key1, 値1
dic.add key2, 値2

このようにkeyと値のセットで格納していきます。
値には配列やクラスモジュールを指定することも可能です。

Dictionaryは格納した順番が保持されたり、keyの一覧・値の一覧などデータの取得方法が柔軟であるというメリットがあります。

値に配列を指定して使う方法は以下の「DictionaryとArrayの組み合わせ」を参考にしてください

Dictionaryを利用する際には以下の様な使い方が可能です。

ForEach d In dic
  d 
  dic.Item(d) 
Loop

このようにすると、dでkeyを、dic.Item(d)で値を取得できます。

⋙Array

Dim arr() As String
ReDim arr(1)
arr(0) = "Text0"
arr(1) = "Text1"

ReDimで配列の要素数を指定しています。要素数を指定しないと、値を入れられずエラーになりますので注意してください。

ReDimにはDimでの宣言がなければ宣言の代わりも同時に行う性質を持っていますが、宣言自体はされていないものと認識されるため不都合が生じてきます。
必ずDimでの宣言を行うようにしましょう。

Dim arr() As String
ReDim arr(1)
arr(0) = "Text0"
arr(1) = "Text1"
ReDim arr(2)

配列を変更しようと上記のように書いてしまうと、ReDim arr(2)で要素数を書き換えるタイミングで、それまで入っていた値は初期化されます。
すでに配列の中にある要素はそのままで配列数を変更したい場合は以下のようにします。

Dim arr() As String
ReDim arr(1)
arr(0) = "Text0"
arr(1) = "Text1"
ReDim Preserve arr(2)

このようにReDimのあとにPreserveを入れることで、葉入れるの中身はそのままで要素数を変更することができます。

⋙DictionaryとArrayの組み合わせ

Dim dic As Dictionary
Set dic = New Dictionary

Dim arr1 As Variant
arr1 = Array(XXXX, YYYY・・・)

dic.add Key1, arr1

dic.Item(key1)(0) → XXXX
dic.Item(key1)(1) → YYYY

このようにすると、dic.Item(key1)(0)XXXXを、dic.Item(key1)(1)YYYYを取得することができます。

さいごに

いかがでしたか?
少しでも役に立つ知識があれば幸いです。
他に気づくことがあれば追記していきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?