たま氏の覚え書き

KNIME・AccessVBA・Swift等、学習したことを覚え書き

AccessVBA_変数と定数

変数・定数に関する基礎知識として、その種類・宣言文・適用範囲などについて記載

【変数】宣言の際の基本構文

▼構文▼
Public 変数 As データ型
Private 変数 As データ型
Dim 変数 As データ型
※Public / Private / Dim とは、変数を宣言する際に使用するステートメント
※それぞれ「Let Dim」のように頭にLetをつけるのが本来の記述だが、Letは省略することができる

【変数】宣言する場所と変数の種類

1.宣言セクション(Decralations)に宣言 → パブリック変数 / モジュールレベル変数
2.プロシージャ内 に宣言 →プロシージャレベル変数(ローカル変数)

種類と適用範囲

1.パブリック変数:すべてのモジュール・プロシージャから参照可
 →Publicステートメントを使用
2.モジュールレベル変数:宣言したモジュール内の各プロシージャから参照可
 →DimまたはPrivateステートメントを使用
3.プロシージャレベル変数:宣言したプロシージャ内から参照可
 →DimまたはPrivateステートメントを使用

種類と有効期間

1.パブリック変数:Endステートメント(終了時)またはモジュールに変更を加えた際に初期化
2.モジュールレベル変数:Endステートメント(終了時)またはモジュールに変更を加えた際に初期化
3.プロシージャレベル変数:プロシージャの終了で初期化

※すべての変数はファイルを閉じるタイミングで初期化される
※Endステートメント:コードの中に記述することでコードの実行を(呼び出し元含め)強制終了できる

静的変数

Staticステートメントを使用して宣言された変数で、値を初期化せずに保持したいときに使用
・プロシージャレベル変数でのみ有効であるため、宣言セクションで宣言することはできない
▼構文▼
Static 変数 As データ型

【定数】宣言する場所と変数の種類

1.標準モジュールの宣言セクション(Decralations)に宣言→ パブリック定数
2.宣言セクション(Decralations)に宣言→ モジュールレベル定数
3.プロシージャ内に宣言→ プロシージャレベル定数

種類と適用範囲

1.パブリック定数:すべてのモジュール・プロシージャから参照可
 →Public Constステートメントを使用
2.モジュールレベル定数:宣言したモジュール内の各プロシージャから参照可
 →Constステートメントを使用
3.プロシージャレベル定数:「Const」宣言したプロシージャ内から参照可
 →Constステートメントを使用

【オブジェクト変数】とは

・オブジェクトの参照を変数に格納することができる
・オブジェクト変数は、そのオブジェクトと同じように扱うことが可能となる
・Setステートメントで参照を代入する

【オブジェクト変数】宣言時のデータ型

固有オブジェクト型

特定のオブジェクト名を指定
▼構文▼
Dim Obj変数 As Form (またはTextBox,Label等)
Set Obj変数 = [参照するオブジェクト]

総称オブジェクト型

特定のオブジェクトでなく、オブジェクトそのものを指定
▼構文▼
Dim Obj変数 As Object
Set Obj変数 = [参照するオブジェクト]

【オブジェクト変数】参照の解除と代入の有無

キーワード「Nothing」を使用
▼構文▼
参照解除の場合:Set Obj変数 = Nothing
代入の有無をTrue/Falseで返す場合:Obj変数 Is Nothing
▼記述例▼

Sub ObjectVariable_test()
 Dim ObjForm As Form 'オブジェクト変数をForm型で宣言
 Docmd.OpenForm "フォーム名" 'フォームを開く
 Set ObjForm = Forms("フォーム名") 'オブジェクト変数にフォームを代入
 ObjForm.txt1.value = "あいうえお" 'フォームの中のパーツ「txt1」に"あいうえお"を代入

 Set ObjForm = Nothing '参照を解除
 If ObjForm Is Nothing Then '解除できていたら(変数の中に何もなかったら)…
  Docmd.Close "フォーム名" 'フォームを閉じる
 End If
End Sub