サンプルでは、サブフォームの使用をボタンがクリックされた時のみにしています。サブフォームは、関連付けられたテーブルのデータを表示することができますが、そのレコードに対して変更や削除も可能なので、必要な時のみ、サブフォームを利用したい、といった時には有効な方法の1つです。
フォームには、テキストボックスとコマンドボタン、そしてソースオブジェクトでテーブルを指定してあるサブフォームを配置します。
まずは、フォームが表示されアクティブになった時に発生するイベント「Activate」で、サブフォームの使用を不可能にします。
Private Sub Form_Activate()
Me.Repaint
Me!サブフォーム1.Enabled = False
End Sub
Repaintメソッドは、指定されたフォームに対して、画面の更新操作がある場合は再描画します。
次に、コマンドボタンがクリックされた時に発生するイベント「Click」で、サブフォームを使用可能にしてフォーカスを移動させます。
Private Sub コマンド0_Click()
Me!サブフォーム1.Enabled = True
Me!サブフォーム1.SetFocus
End Sub
アクティブになっているフォーム上のコントロールにフォーカスを移動させるには、SetFocusメソッドを使います。サブフォームもコントロールの1つです。
次に、サブフォームから他のコントロールへフォーカスが移動する時に発生するイベント「Exit」で、フォーカスをテキストボックスに移動させてから
サブフォームの使用を不可能にします。
Private Sub サブフォーム1_Exit(Cancel As Integer)
Me!テキスト1.SetFocus
Me.Repaint
Me!サブフォーム1.Enabled = False
End Sub
以上のイベントプロシージャを作成すると、ボタンがクリックされた時のみ、サブフォームの使用が可能になります。