VBA ウィンドウを切り替える [VBA]
複数のウィンドウを開いた状態で、目的のウィンドウに切り替える方法です。
切り替えたいウィンドウがフォームの場合は、SetFocusが使えますが、その他のテーブル・クエリなどは、SetFocusメソッドがありませんので、この方法は使えません。
テーブル・クエリなどのウィンドウに切り替えたい場合は、DoCmd.SelectObjectを使用します。
・構文
DoCmd.SelectObject ObjectType , ObjectName , InNavigationPane
・引数
ObjectType … 必須。オブジェクトの種類を、AcObjectTypeクラスの定数で指定します。
名前 | 値 | 説明 |
acDatabaseProperties | 11 | Database プロパティ |
acDefault | -1 | |
acDiagram | 8 | データベースダイアグラム (Access プロジェクト ) |
acForm | 2 | フォーム |
acFunction | 10 | 関数 |
acMacro | 4 | マクロ |
acModule | 5 | モジュール |
acQuery | 1 | クエリ |
acReport | 3 | レポート |
acServerView | 7 | サーバー ビュー |
acStoredProcedure | 9 | ストアドプロシージャ (Access プロジェクト ) |
acTable | 0 | テーブル |
acTableDataMacro | 12 | データ マクロ |
ObjectName … 選択するオブジェクトの名前を文字列で指定します。
InNavigationPane … データベースウィンドウの項目を選択する場合はTrue、開いているウィンドウを選択する場合はFalse(既定値)を指定します。
例えば、テーブル「TMTDFK」を選択する場合は、
DoCmd.SelectObject acTable, "TMTDFK", False
と、します。
現在のウィンドウが最大化されていない状態で、最小化されているウィンドウを選択しても、ウィンドウは最小化されたままになります。
この場合は、選択後DoCmd.Restoreなどを行う必要があります。
VBA ウィンドウの最大化 [VBA]
ACCESSの中に表示されているウィンドウではなく、ACCESS自体のウィンドウを最大化する方法です。
・最大化
DoCmd.RunCommand acCmdAppMaximize
その他、ACCESSウィンドウ操作関連です。
・最小化
DoCmd.RunCommand acCmdAppMinimize
・元のサイズに戻す
DoCmd.RunCommand acCmdAppRestore
他に、ウィンドウサイズの変更、ウィンドウの移動を行う、
DoCmd.RunCommand acCmdAppMove
DoCmd.RunCommand acCmdAppSize
も、あるのですが、パラメタを指定して、目的の状態にするのではなく、その操作を行う状態にするだけで、移動やサイズ変更の操作が必要になります。
実質的に、これは使えないと思います。
あと、DoCmd.RunCommandは、ACCESSのバージョンが古いと、使えないかも。
確認は、2010で行っています。
フォーム RecordsetType・レコードセット プロパティ [フォーム]
フォームのプロパティで、「データ」タブにある「レコードセット」についてです。
あまりこの項目を意識する必要はないと思うのですが、いちおうどんな物か知っておくと良いと思います。
設定できる内容は、以下の3つ。
設定値 | 内容 |
ダイナセット | 1 つのテーブルまたは一対一のリレーションシップが設定されたテーブルのフィールドに連結されているコントロールを編集できます。一対多のリレーションシップが設定されたテーブルのフィールドに連結されているコントロールの場合は、テーブル間で連鎖更新 (連鎖更新: テーブル間に参照整合性が設定されているリレーションシップにおいて、主テーブルでレコードを変更すると、関連テーブルのすべての関連レコードが更新されることです。)が有効に設定されていない限り、"一" 側の結合フィールドからデータを編集することはできません。(既定値) |
ダイナセット (矛盾を許す) | フィールドに連結されたすべてのテーブルとコントロールを編集できます。 |
スナップショット | フィールドに連結されたテーブルまたはコントロールは編集できません。 |
内容は、ヘルプから引用しました。
各設定値の内容を、順に説明します。