複数のサブフォームを含むフォームがあります。
次の動作をしたいと思います: メイン フォームの最後のフィールドまたはサブフォームの最後のフィールドでタブ キーを押すと、定義されたTab orderに従って、フォーカスが次のサブフォームに移動するか、メイン フォームに戻ります。
これを実現するために、すべてのサブフォームとメイン フォームのCycleプロパティをCurrent pageに設定します。フォーム ビュー
に表示
されるものを除いて、すべてのサブフォームはデータシートとしてメイン フォーム内に表示されます。これで、メイン フォームと、データシートとして表示されるサブフォームに対してのみ必要な動作が得られますが、Formとして表示されるサブフォームに対してはそうではありません。
これは Access 2003 の通常の動作ですか? 他に変更しなければならないプロパティはありますか?
注:「誤動作」フォームのデフォルトビューを他のフォームと同じようにデータシートに変更すると、それも私が望むように動作します...
何が間違っていますか?
そして...これがaccess 2003の仕組みである場合... OnTabメソッドが見つからない場合、vbaを使用して目的の動作を取得する最良の方法は何ですか?
編集:フォームに正しいプロパティを設定してこれを実行できるかどうかを理解するのを待っている間、「誤動作」サブフォームの最初と最後のフィールドでこのコードを使用して、目的の動作を実現しました。
'In the last field
Private Sub Posizione_KeyDown(KeyCode As Integer, Shift As Integer)
If (KeyCode = vbKeyTab And Shift = 0) Then
KeyCode = 0
Me.Parent!Autore_Subform.SetFocus
End If
End Sub
'in the first field
Private Sub Stanza_KeyDown(KeyCode As Integer, Shift As Integer)
If (KeyCode = vbKeyTab And Shift = 1) Then
KeyCode = 0
Me.Parent!Pagine.SetFocus
End If
End Sub