HOME > 即効テクニック > AccessVBA > ファイル操作・他アプリケーションとの連携 > 保存されているすべてのフォームを参照する

即効テクニック

ファイル操作・他アプリケーションとの連携

保存されているすべてのフォームを参照する

(Access 97)
● 概要 ●

構文  expression.AllForms 取得のみ


設定項目        内容
expression      CurrentProjectオブジェクト[省略不可]


AllFormsコレクションを参照します。このコレクションは、カレントプロジェクト内に保存されているフォームに対応するAccessObjectオブジェクトをすべて含んでいます。
次のコードは、保存されているすべてのフォームの名前を列挙するものです。
For Each...Nextステートメントを利用して、カレントプロジェクトに保存されているフォームを1つずつ参照しています。


● サンプル1 ●
'カレントデータベース内のフォーム名を列挙する
Sub AllFormsSample1()
    'フォーム参照用
    Dim myObject As AccessObject
    'メッセージ出力用
    Dim myStr As String
    myStr = ""
    '保存されているフォームを1つずつ参照する
    For Each myObject In CurrentProject.AllForms
        'フォーム名を取得
        myStr = myStr & ", " & myObject.Name
    Next
    'メッセージボックスにフォーム名を書き出す
    MsgBox myStr
End Sub


● サンプル2 ●
前述のコードは、インデックスによる参照を利用して、次のように書くこともできます。

'カレントデータベース内のフォーム名を列挙する
Sub AllFormsSample2()
    'インデックス用
    Dim i As Integer
    'メッセージ出力用
    Dim myStr As String
    '補足1
    For i = 0 To CurrentProject.AllForms.Count - 1
        'フォーム名を取得
        myStr = myStr & ", " & CurrentProject.AllForms(i).Name
    Next
    'メッセージボックスにフォーム名を書き出す
    MsgBox myStr
End Sub


● 補足1 ●
インデックスの最大値を、Countプロパティを用いて求めています。インデックスは0から始まるので、最大値はCountプロパティの値から1引いたものになります。


● 補足2 ●
このサンプルの実行結果では、メッセージボックスに表示されるすべてのフォーム名の文頭にカンマと半角スペースが表示されますが、「MsgBox myStr」を「MsgBox Mid(myStr, 3)」に変更すると、文頭にある余分なカンマと半角スペースを省いて表示することができます。