会社員プログラマー「Kaia May」のコードの備忘録サイトです〜!

Accessでデータを一時的に保存する方法まとめ(変数・定数・配列・ユーザー定義型・コレクション)

Accessでデータを一時的に保存する方法まとめ(変数・定数・配列・ユーザー定義型・コレクション)

 

変数

パブリック変数

※使用には注意が必要

宣言するところ標準モジュールの宣言セクション
ステートメントPublic
適用範囲(スコープ)全モジュールの全プロシージャから参照可能
有効期限・モジュールに変更をした場合
・Endステートメントでプロシージャ終了時に初期化

モジュールレベル変数

宣言するところ宣言セクション
ステートメントDim
Private
適用範囲(スコープ)宣言されたモジュール内の全プロシージャから参照可能
有効期限・モジュールに変更をした場合
・Endステートメントでプロシージャ終了時に初期化

プロシージャレベル変数

宣言するところプロシージャの中
ステートメントDim
Private
適用範囲(スコープ)宣言されたプロシージャの中からだけ参照可能
有効期限プロシージャ終了時に初期化

定数

パブリック定数

宣言するところ標準モジュールの宣言セクション
ステートメントPublic Const
適用範囲(スコープ)全モジュールの全プロシージャから参照可能

モジュールレベル定数

宣言するところ宣言セクション
ステートメントConst
適用範囲(スコープ)宣言されたモジュール内の全プロシージャから参照可能

プロシージャレベル定数

宣言するところプロシージャの中
ステートメントConst
適用範囲(スコープ)宣言されたプロシージャの中だけ参照可能

静的変数

プロシージャの中で使える。プロシージャが終了しても値が初期化されずに保持される。
※宣言セクションでは宣言不可。パブリック変数・モジュールレベル変数は静的変数にはできない。

宣言するところプロシージャの中
ステートメントStatic
適用範囲(スコープ)・モジュールに変更をした場合
・Endステートメントでプロシージャ終了時に初期化

オブジェクト変数

変数のように値ではなく、オブジェクトへの参照を格納できる。

固有オブジェクト型総称オブジェクト型があり、一般的にオブジェクトの型がわかるときは固有・わからない時は総称を使う。固有オブジェクトでの宣言のほうが実行速度はやや速い。

固有オブジェクト型での宣言総称オブジェクト型での宣言
Dim オブジェクト変数 As Form
Dim オブジェクト変数 As Label
Dim オブジェクト変数 As TextBox
Dim オブジェクト変数 As Object

オブジェクト変数にオブジェクトの参照を代入する時は、Setステートメントを使う。

Set オブジェクト変数 = 参照するオブジェクト
例)Set MyForm = Forms(“Fフォーム”)

参照の解除にはキーワード「Nothing」を代入する

Set オブジェクト変数 = Nothing
例) Set MyForm = Nothing

オブジェクトへの参照の代入の確認方法は、

オブジェクト変数 Is Nothing
例)MyForm Is Nothing

配列

変数に複数の値を代入したい場合に使う。代入できるデータ型は1種類のみ。
変数と同じようにPublicステートメントやPrivateステートメントを使用して適用範囲を指定可能。
一次元配列多次元配列がある。多次元配列はメモリ消費が多いので多用はしないこと。
静的配列動的配列があり、静的配列は最初から要素数が決まっているもので、動的配列は要素数が配列宣言時には確定しておらず後で決めるもの。
まず静的配列については以下の通り。

配列変数の宣言は、

Dim 変数(配列の要素数-1)As データ型
例)Dim MyArray(5) As String

配列変数に値を代入するには、

変数(インデックス番号)= 代入する値
例)MyArray(i) = I & “要素”

インデックス番号とは配列に格納された複数の値(=要素)につけられる番号で、0から始まる。
Option Baseステートメントを宣言セクションで宣言するとインデックス番号の最小値を変更できる。

配列変数ごとにインデックス番号の最小値をと最大値を設定したい場合は、

Dim 変数(最小値 To 最大値) As データ型
例)Dim MyArray(1 To 5) As String

とすることで設定できる。

多次元配列の宣言は、

Dim 変数 (1次元の要素数-1,2次元の要素数-1,…)As データ型
例)Dim MyArray(2,2) As String

となる。

次に動的配列を見てみる。
動的配列では宣言時に配列の要素数を設定しないため、以下のような宣言になる。

Dim 変数()As データ型
例)Dim MyArray() As String

実際に使用する段階で、ReDimステートメントで要素数を設定する。要素数は数値でも変数でも可。

ReDim 変数 (要素数-1)
例)ReDim MyArray(MyLng)
ReDimステートメントを使うと、それまで格納されていた配列の値は初期化されるが、もし初期化せずそのまま使いたい場合は、Preserveステートメントを使う。
ReDim Preserve 変数 (新しい要素数-1)
例)ReDim Preserve MyArray(3)
配列を一括で初期化する場合は、Eraseステートメントでまとめて初期化できる。
Erase 配列変数
例)Erase MyArray
なお、Eraseステートメントでの配列の初期化では、動的配列の場合は値のクリアとともにメモリーの開放もおこなうが、静的配列の場合はメモリーの開放は行われない。

ユーザー定義型

配列変数には同じデータ型しか格納できないが、ユーザー定義型の場合は、1つの変数に複数の異なるデータ型の値を格納することができるのが特徴。
ユーザー定義型の宣言は、標準モジュールの宣言セクションで行われ、Typeステートメントを使って定義する。
Type ユーザー定義型名
要素名 1 As データ型1
要素名 2 As データ型2
要素名 3 As データ型3
End Type
例)
Type ShokuinType
職員番号 As Long
部署コード As String
職員名 As String
End Type
定義したら、宣言セクションにユーザー定義型名を指定する。
Dim ユーザー定義型の変数 As ユーザー定義型名
例)Dim MyShokuin As ShokuinType
ユーザー定義型の変数に値を設定。取得する構文は、
値を設定する場は、
ユーザー定義型の変数.要素名 = 値
例)
MyShokuin( i ).職員番号 = Me.txt.Value
MyShokuin( i ).コード = Me.txt1.Value
MyShokuin( i ).職員名 = Me.txt2.Value
値を取得する場合は、
変数 = ユーザー定義型の変数.要素名
例)
Me.txt.Caption = Me.txt.Caption & MyShokuin( i ).職員番号 & MyShokuin( i ).コード & MyShokuin( i ).職員名 & vbCrLf

コレクション

コレクションは、文字列・数値・オブジェクトなど異なるデータ型のデータを要素とした独自のオブジェクトが作れるCollectionというオブジェクト。格納されていう要素をメンバと呼ぶこともある。
宣言するときは、宣言セクションに、
Dim コレクション As Collection
Set コレクション = New Collection
または、
Dim コレクション As New Collection
例)Dim MyCol As New Collection
でコレクションを作成できる。

またCollectionオブジェクトには、メソッドとプロパティもある。

メソッド内容
Addコレクションに要素を追加
Removeコレクションから要素を削除
Itemコレクションから指定した文字列に対応する要素を返す
プロパティ内容
Countコレクションの要素の数を返す

 

値の取得は、
例)
MyCol.Add 12345
MyCol.Add Me.txt
MyCol.Add “ABCDEF”

のようにやる。
また、要素の順番を変えることもできる。

MyCol.Add ”A”, Before : = 1

で、この要素を一つ目にすることができ、

My Col.Add “A”, After : = 1

で、この要素を最後に持っていくことができる。

上の例ではMyColは独自に作成したCollectionオブジェクトだが、Accessに備わるオブジェクトの集合とのしてのコレクションもある。

コレクション名内容
Forms現在開いている全フォーム
Applicationオブジェクトのメンバ
Reports現在開いている全レポート
Applicationオブジェクトのメンバ
Printersシステムで使用可能な全プリンタ
Applicationオブジェクトのメンバ
Me.Controlsフォーム・レポート上の全コントロール
CurrentProject.AllFormsデータベース内にある全フォーム
CurrentProject.AllReportsデータベース内にある全レポート

 

>bokucode

bokucode

遅ればせながらプログラミングを始めた静岡在住の30代の会社員プログラマー「Kaia May」です!
いろんな言語のコードに挑戦していきたいと思っていて、その中でメモしておきたいコードや今後も使えるコードやその説明などを記録していきます。
他にも参考になったおすすめサイトや書籍なども紹介していきます。

CTR IMG