Access VBA入門:DoCmd.OpenFormの使い方と引数とパラメータの説明|商品マスターフォームを開く

DoCmd.OpenFormで指定したフォームを開くことができます。メニューのフォームなどで良く使うメソッドです。重宝する引数もあるので使用例で説明します。

BackHomeへ BackAccess VBA入門へ


構文:
OpenForm (FormName, View, FilterName, WhereCondition, 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円以下のレコードを抽出し開きます。
順番を飛ばしてWhereConditionを指定

Sub MyOpenForm()
   DoCmd.OpenForm "F-商品マスター", acNormal, WhereCondition:="単価<=290"
End Sub

実行結果です。
単価が290円以下のレコードのみ表示されていて、下のフィールター部分がハイライトされて[フィルター摘用]になっています。
単価が290円以下のレコードのみ表示


● フォームのパラメータ「OpenArgs」を指定する

引数OpenArgsをしていすると、値を開くフォームに渡すことができます。
下では「Access VAB 入門」の文字列を渡しています。
フォームのパラメータ「OpenArgs」を指定する

Sub MyOpenForm()
   DoCmd.OpenForm "F-商品マスター", acNormal, , , , , "Access VAB 入門"
End Sub

OpenArgsで渡された値を、フォームのOpenイベントで受け取り、フォームのキャプションとして表示させています。
OpenArgsで渡された値を、フォームのOpenイベントで受け取る

Private Sub Form_Open(Cancel As Integer)
    Me.Caption = OpenArgs
End Sub

開いたフォームのタイトルがOpenArgsで渡された値になっています。
開いたフォームのタイトルがOpenArgsで渡された値になっている

OpenArgsを使うと同じフォームで、使い分けたり特定のデータを入力できないようにするなどすることができます。



BackHomeへ BackAccess VBA入門へ

Copyright(C) FeedSoft