はてなブックマークに追加
Facebookでシェア
Google+でシェア
Twitterでシェア
フォームの基本オブジェクト
VBAでフォームを操作するにはFormオブジェクトを使います。Formオブジェクトは、フォーム上に配置したコントロールを使うときや、フォームと連結したデータを操作するときなど、すべてのフォーム操作の基本となるオブジェクトです。

Formオブジェクトを参照・取得する方法
 Formオブジェクトは、Me/Forms/Screen.ActiveFormを使って参照・取得できます。どの書式を使ってもFormオブジェクトを取得できますが、取得対象のフォームが異なります。
 「フォームから別なフォームを参照する場合はForms」、「最前面のフォームを参照する場合はScreen.ActiveForm」、「実行中のVBAが記述されたフォームを参照する場合はMe」のように、各書式を場面に応じて使い分けます。

図 1Me/Forms/Screen.ActiveFormの書式
Me.プロパティメソッド
[書式 1] 実行中のVBAが記述されているフォームを表します

Forms(フォーム名).プロパティメソッド
[書式 2] 任意のフォームを表します

Screen.ActiveForm.プロパティメソッド
[書式 3] 最前面に表示されているフォームを表します
◆引数
フォーム名
 操作対象のフォームの名前を、文字列で記述・指定します。

◆プロパティ/メソッド
 Requery、CurrentRecordといったフォームの機能や、フォーム上に配置したテキストボックスなどのコントロール名を記述します。

Tips
・Meは「自分自身」を表します。フォームで使用した場合はフォームの機能を、レポートで使用した場合はレポートの機能が使えます。
・Screen.ActiveFormを使うときは、必ずフォームが最前面に表示されていなくてはなりません。テーブルやクエリが最前面に表示されているとエラーが発生します。

【記述例】
フォーム「住所一覧」で再クエリを実行します。
Forms("住所一覧").Requery

ワンポイント
Forms/Screen.ActiveFormとMeの違い
MeとForms/Screen.ActiveFormは、どちらもFormオブジェクトを表します。Formオブジェクトそのものの機能的な違いはありませんが、プログラムを記述したフォーム上にあるコントロールを参照するときはMeの方が便利です。なぜなら、コントロール名を一覧で選択できるためです。また、Meを使うと、自分自身を参照・操作していることが明確になるため、プログラムの読みやすさも向上します。

Meを使ったときに表示されるメソッドとプロパティの一覧
Formオブジェクトの使用例
 次のリストは、Formオブジェクトでフォームを操作するプログラムの作成例です。プロシージャ「btnSubmit_Click」は、フォームに配置した「再表示」ボタンのイベントプロシージャ「クリック時」です。

 このサンプルでは、連結フォームを使用して表示したデータの再表示(再クエリ)を行っています。プログラムを記述したフォーム(自分自身)を使用するため、6行目でMeを使ってフォームを指定しました。

リスト 1Formオブジェクトを使用するプログラム
1
2
3
4
5
6
7
8

フォーム1
Option Compare Database
Option Explicit

Private Sub btnSubmit_Click()

    Me.Requery

End Sub

◆実行例
 このサンプルは、Formオブジェクトを使ってフォームを操作するデモンストレーションです。フォーム1をフォームビューで開き「再表示」ボタンをクリックすると、フォームに表示したデータを再表示できます。データをスクロールするなどをしてからボタンをクリックしてください。

図 2サンプルプログラムの実行結果
サンプルプログラムの実行結果


Copyright(C) 1999-2015 結城圭介(Ver.3.51) All rights reserved