Access VBA入門:DoCmd.OpenFormの使い方と引数とパラメータの説明|商品マスターフォームを開く
DoCmd.OpenFormで指定したフォームを開くことができます。メニューのフォームなどで良く使うメソッドです。重宝する引数もあるので使用例で説明します。
構文:
OpenForm (FormName, View, FilterName, WhereCondition, DataMode, WindowMode,
OpenArgs)
- FormNameは必須です。 開くフォーム名
- Viewは省略できます。フォームのビュー状態を指定します。
- FilterNameは省略できます。 抽出条件を指定します。
- WhereConditionは省略できます。 抽出するWhere条件式を指定します。
- DataModeは省略できます。 入力モードを指定します。
- WindowModeは省略できます。 ウィンドウの状態を指定します。
- OpenArgsは省略できます。 フォームのパラメータ
Viewの定数
acDesign |
デザインビュー |
acFormDS |
データシートビュー |
acNormal |
フォームビュー(規定値) |
acPreview |
印刷プレビュー |
DataModeの定数
acFormAdd |
追加モード |
acFormEdit |
編集モード |
acFormPropertySettings |
フォームのプロパティの設定値(規定値) |
acFormReadOnly |
読み取り専用 |
WindowModeの定数
acDialog |
ダイアログ |
acHidden |
非表示 |
acIcon |
アイコン |
acWindowNormal |
標準(規定値) |
ここでは商品マスターフォームをVBAで開き、次に単価が290円以下のレコードを抽出し開きます。
下の「商品マスター」フォームをDoCmd.OpenFormで開きます。
●引数にフォーム名を指定しただけの使用例
引数FormNameに変数を使用しないで、直接フォーム名で指定しています。
これでツールバーの[マクロの実行]ボタンをクリックすると、上の商品マスターフォームが表示されます。
省略した引数は全て既定値なので、フォームビュー・フィルターなし・フォーム設定の入力モード・標準ウィンドウ・パラメータなしで開いています。
Option Compare Database
Option Explicit
Sub MyOpenForm()
DoCmd.OpenForm "F-商品マスター"
End Sub
●印刷プレビューモードでフォームを開く
引数のViewに、acPreviewを指定して開きます。
Sub MyOpenForm()
DoCmd.OpenForm "F-商品マスター", acPreview
End Sub
フォームが印刷プレビュー画面で開きました。
●引数の順番を変更してWhere条件を指定する
今回は引数の順番を変更してみます。
下の場合「acNormal」の次はFilterModeなのですが、順番を飛ばしてWhereConditionを指定しています。
WhereConditionで単価が290円以下のレコードを抽出し開きます。
Sub MyOpenForm()
DoCmd.OpenForm "F-商品マスター", acNormal, WhereCondition:="単価<=290"
End Sub
実行結果です。
単価が290円以下のレコードのみ表示されていて、下のフィールター部分がハイライトされて[フィルター摘用]になっています。
● フォームのパラメータ「OpenArgs」を指定する
引数OpenArgsをしていすると、値を開くフォームに渡すことができます。
下では「Access VAB 入門」の文字列を渡しています。
Sub MyOpenForm()
DoCmd.OpenForm "F-商品マスター", acNormal, , , , , "Access VAB 入門"
End Sub
OpenArgsで渡された値を、フォームのOpenイベントで受け取り、フォームのキャプションとして表示させています。
Private Sub Form_Open(Cancel As Integer)
Me.Caption = OpenArgs
End Sub
開いたフォームのタイトルがOpenArgsで渡された値になっています。
OpenArgsを使うと同じフォームで、使い分けたり特定のデータを入力できないようにするなどすることができます。