HOME > 即効テクニック > AccessVBA > ユーザーインターフェース > フォームの表示/非表示を切り替える

即効テクニック

ユーザーインターフェース

フォームの表示/非表示を切り替える

(Access 2000/2002/2003)
● 概要 ●

構文  expression.Visible 設定/取得


設定項目        内容
expression	Formオブジェクト[省略可能]

Trueでフォームを表示、Falseでフォームを非表示にします。
は、フォームモジュールで使用する場合のみ省略可能です。
省略した場合、自身のFormオブジェクトを指定したことになります。


● 手順1 ●
次のコードは、メニュー画面上の[商品入力フォームへ]ボタンをクリックして「商品入力フォーム」を開くときに、自身(メニュー画面)を非表示にするものです。
OpenFormメソッドの引数に、自身の名前を設定している点に注目してください。

● サンプル1 ●
'フォームの表示/非表示を切り替える1

'別フォームを開くときに自身を非表示にする
Private Sub cmd商品入力_Click()
    'OpenArgsに自身のフォーム名を設定して商品入力フォームを開く
    DoCmd.OpenForm "商品入力フォーム", , , , , , Me.Name
     '自身を非表示にする
    Me.Visible = False
End Sub


● 手順2 ●
OpenFormメソッドの引数に指定した文字列式は、「商品入力フォーム」のOpenArgsプロパティに設定されます。
 次のコードは、「商品入力フォーム」のCloseイベントプロシージャです。
 メニュー画面から開いた場合、OpenArgsプロパティにメニュー画面の名前が設定されています。
 メニュー画面を使わずに開いた場合、OpenArgsプロパティはNullです。
 そこで、フォームを閉じるときに、OpenArgsプロパティがNullかどうかを判断して、Nullでな
ければ、プロパティ値を元にメニュー画面を表示します。

● サンプル2 ●
'フォームの表示/非表示を切り替える2

Private Sub Form_Close()
   'OpenArgsプロパティがNullでなければ
    If Not IsNull(Me.OpenArgs) Then
     'メニュー画面を表示する
        Forms(Me.OpenArgs).Visible = True
    End If
End Sub


● 実行結果 ●
メニュー画面の[商品入力フォームへ]ボタンをクリックすると、商品入力フォームが開き、メニュー画面が非表示になります。
商品入力フォームの[閉じる]ボタンをクリックするとメニュー画面が再表示されます。


● ポイント ●
 メニュー画面から画面遷移を行う際、メニュー画面を閉じてしまうと、次に開いたときにコンボボックスの入力値やオプションボタンの設定値が失われています。
 この例のように、Visibleプロパティを使ってメニュー画面を非表示にしておけば、再表示したときにも入力値や設定値は失われることなく保つことができます。