HOME > 即効テクニック > AccessVBA > ユーザーインターフェース > ボタンがクリックされたらサブフォームの使用を許可してフォーカスを移動する

即効テクニック

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

ボタンがクリックされたらサブフォームの使用を許可してフォーカスを移動する

(Access 97)
サンプルでは、サブフォームの使用をボタンがクリックされた時のみにしています。サブフォームは、関連付けられたテーブルのデータを表示することができますが、そのレコードに対して変更や削除も可能なので、必要な時のみ、サブフォームを利用したい、といった時には有効な方法の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

以上のイベントプロシージャを作成すると、ボタンがクリックされた時のみ、サブフォームの使用が可能になります。