フォームの基本オブジェクト
VBAでフォームを操作するにはFormオブジェクトを使います。Formオブジェクトは、フォーム上に配置したコントロールを使うときや、フォームと連結したデータを操作するときなど、すべてのフォーム操作の基本となるオブジェクトです。
サンプルダウンロード
Formオブジェクトを参照・取得する方法
Formオブジェクトは、Me/Forms/Screen.ActiveFormを使って参照・取得できます。どの書式を使ってもFormオブジェクトを取得できますが、取得対象のフォームが異なります。
「フォームから別なフォームを参照する場合はForms」、「最前面のフォームを参照する場合はScreen.ActiveForm」、「実行中のVBAが記述されたフォームを参照する場合はMe」のように、各書式を場面に応じて使い分けます。
図 1
Me/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を使うと、自分自身を参照・操作していることが明確になるため、プログラムの読みやすさも向上します。
Formオブジェクトの使用例
次のリストは、Formオブジェクトでフォームを操作するプログラムの作成例です。プロシージャ「btnSubmit_Click」は、フォームに配置した「再表示」ボタンのイベントプロシージャ「クリック時」です。
このサンプルでは、連結フォームを使用して表示したデータの再表示(再クエリ)を行っています。プログラムを記述したフォーム(自分自身)を使用するため、6行目でMeを使ってフォームを指定しました。
リスト 1
Formオブジェクトを使用するプログラム
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
サンプルプログラムの実行結果
Access VBA Tips+α
フォーム・サブフォーム活用編
◆フォーム操作の基礎知識
フォームの基本オブジェクト/Me Forms ActiveForm
フォームのセクションを操作する/Section
サブフォームを操作する
◆DoCmdでフォームを操作する
VBAでフォームを開く/DoCmd.OpenForm
VBAでフォームを閉じる/DoCmd.Close
マウスポインタを待機表示にする/DoCmd.HourGlass
フォームを最大化/最小化/元の大きさに戻す
/DoCmd.Maximize DoCmd.Minimize DoCmd.Restore
すべてのウィンドウ(すべてのタブ)を閉じる
/DoCmd.Runcommand acCmdCloseAll
◆フォーム操作のプロパティとメソッド
フォーム機能の表示/非表示を切り替える
フォームを再描画するかどうか切り替える/Painting
フォームを再描画する/Repaint
フォームにデータを渡す・受け取る/OpenArgs
フォーム名を取得する/Name
フォームの標題を取得する・変更する/Caption
フォームウィンドウの幅や高さを求める
/WindowHeight/WindowWidth
フォームウィンドウの横位置や縦位置を求める
/WindowTop/WindowLeft
フォームウィンドウ表示域の幅や高さを求める
/InsideHeight/InsideWidth
カレントセクションの横位置や縦位置を求める
/CurrentSectionTop/CurrentSectionLeft
一定の間隔で処理を実行する/TimerInterval
フォームを最前面に表示する/SetFocus
フォームの表示位置と大きさを調節する/Move
フォームをスクロールする/GoToPage
現在のコントロールを使用する
フォームに配置したコントロールの個数を取得する
◆連結フォームのデータ操作
連結フォームのレコード総件数を取得する
/Recordset.RecordCount
何件目のレコードを選択しているかを調べる
/CurrentRecord
フォームを再クエリしデータを最新の内容に更新する
/Requery
フォームに入力した内容を取り消す/Undo
フォームに入力した内容をテーブルに保存する
/DoCmd.RunCommand acCmdSaveRecord
任意のレコードに移動する/DoCmd.GoToRecord
カレントレコードが変更されているかを調べる/Dirty
行の選択範囲の情報を求める・設定する/SelTop/SelHeight
列の選択範囲の情報を求める・設定する/SelLeft/SelWidth
詳細セクションにフォーカスを移す/SelWidth応用
新しいレコードか既存のレコードかを判断する/NewRecord
フォームでレコード検索や絞り込みを行う
/Filter/FilterOn
フィルタで複数の条件を組み合わせて検索する
/FilterとAnd Or
フィルタにあいまいな条件を指定して検索する/FilterとLIKE
フォームに設定したフィルタを削除する
/DoCmd.RunCommand acCmdRemoveAllFilters
フォームに表示するレコードを並べ替える
/OrderBy/OrderByOn
フォームのレコードの並べ替え設定を削除する
/DoCmd.RunCommand acCmdRemoveAllSorts
フォームのレコードソースを設定・参照する
/RecordSource
◆フォーム操作機能の応用とサンプル
[ADO]レコードセットの内容をレコードソースにする
サブフォームの高さを自動調整
OpenArgsに2種類以上のデータを渡す・受け取る
閉じるボタン([×]ボタン)で閉じないようにする
Requery後も一覧の状態が変わらないようにする
ダイアログ フォームを毎回同じ場所に表示する
フィルタに該当するレコード件数を調べる/DCount応用
[L]フォームに入力した生年月日から年齢を求める
■DAOデータアクセス編
■ADOデータアクセス編
■クエリー(SQL)編
■フォーム・サブフォーム編
■レポート編
■Printerオブジェクト編
■コントロール基本編
■テキスト/コンボ/リストボックス活用編
■メニューバー・ツールバー編
■マクロ(DoCmd)編
■複数値と添付ファイル編
■Accessの操作と便利な機能編
■プログラミングサンプル編
■番外編1.HTTPやFTPを使うには
■サイト内を検索
Happy! Happy! Islandその他のコンテンツ
■
VBAプログラミング系
Access VBAのTipsとサンプル
Excel VBA(エクセルマクロ)のTipsとサンプル
VBScript/JScriptのTipsとサンプル
プログラミング基礎・入門
■
入門と使い方
Access入門と使い方講座97~2003/2007/2010/2013
Access VBAプログラミング入門 2013/2010/2007/2003
Excel入門と使い方講座2013/2010/2007
■
ダウンロードコーナー
AccessとExcelのフリーソフト
■
その他
質問受け付けコーナー「管理人に聞いてみよう♪」
BBS過去ログ広場
HTMLの書き方
管理人プロフィール
┗
twitter(外部サイト)
管理人へメール
■
別館(海外向けサイト)
Excel Games and Access Games
VBAプログラミング&Tips集の
"Happy! Happy! Island"トップページへ
[PR]管理人が心を込めて書いた本
■
最速攻略 AccessVBAサンプル大全集
Access 2013/2010/2007対応版
■
速効!ビジネスPC Accessマクロ&VBA
Access2013/2010/2007対応
■
最速攻略Accessクエリ テクニック大全集
Access2013/2010/2007対応
■
AccessVBAマクロ超入門講座 Access2010/2007対応
■
ExcelVBA超入門講座 Excel2010/2007対応
■
ExcelVBAでできる RPGゲーム作成入門
■
[改訂新版]実践COBOLプログラミング入門
■
最速攻略 VBScriptサンプル大全集
Windows7/Vista/XP/2000対応
(
アマゾン
へジャンプします)
[PR]注目の情報
転職成功の秘訣はサイトに公開されない求人にあった
採用人数が少ない・専門性が高い・競合他社に知られたくないなど、魅力的な求人情報ほど一般には公開できないのです。
株デビューするなら SBI証券!
業界屈指の格安手数料と業界最高水準のサービスで口座数はネット証券 No.1!口座開設料・管理料は無料。
GDOゴルフショップ
ゴルフ用品のオンラインメガストア。品揃え10万点!
アスタリフトコラーゲンドリンク
毎日続けるものだから・・まとめ買いで最大10%OFF!集中コラーゲンケアで、ハリと潤いの溢れる毎日へ。
[リンク]IT関連情報サイトなど
gihyo.jp
技術評論社提供のIT関連コンテンツサイト
Copyright(C) 1999-2015
結城圭介
(Ver.3.51) All rights reserved