'フォーカスセットの準備
Dim bm As Variant
Dim rst As Recordset
Set rst = Me!SampleSubForm.Form.RecordsetClone
If rst.RecordCount > 0 Then
rst.MoveFirst
Do Until rst.EOF
'キーコードの判断
If rst.Fields("KeyCode").Value = 3 Then
'Bookmarkの取得
bm = rst.Bookmark
Exit Do
End If
rst.MoveNext
Loop
End If
'フォーカスをセット
If Not IsEmpty(bm) Then
'Bookmarkのセット
Me.SampleSubForm.Form.Bookmark = bm
'フォーカスを当てたい
Me.SampleSubForm.Form.txtFieldName.SetFocus
End If
Dim bm As Variant
Dim RS As Recordset
Set RS = Me.RecordsetClone
'Recordsetの最終行に移動
RS.MoveLast
If StrComp(Me.Bookmark, RS.Bookmark, 0) = 0 Then
'親フォームにフォーカスをセット
Forms![OyaForm]![cmdUpdate].SetFocus
Forms![OyaForm]![SampleSubForm].Requery
'Recordsetの最初行に移動
RS.MoveFirst
'Bookmarkのセット
Me.Bookmark = RS.Bookmark
'最初のコントロールにフォーカスをセット
Me.txtCode.SetFocus
End If
Accessのサブフォームを使っている画面でフォーカスを操作する方法
seki (2010年5月18日 14:15)
流通システム部
1.サブフォームの任意の行にフォーカスをセットする方法
サブフォームの行にフォーカスをセットしたい場合は、Bookmarkプロパティを使用します。
下記のソースは行のユニークキーである「KeyCode」が3の行のBookmarkを取得して、
該当行のコントロールにフォーカスをセットするサンプルです。
'フォーカスセットの準備 Dim bm As Variant Dim rst As Recordset Set rst = Me!SampleSubForm.Form.RecordsetClone If rst.RecordCount > 0 Then rst.MoveFirst Do Until rst.EOF 'キーコードの判断 If rst.Fields("KeyCode").Value = 3 Then 'Bookmarkの取得 bm = rst.Bookmark Exit Do End If rst.MoveNext Loop End If 'フォーカスをセット If Not IsEmpty(bm) Then 'Bookmarkのセット Me.SampleSubForm.Form.Bookmark = bm 'フォーカスを当てたい Me.SampleSubForm.Form.txtFieldName.SetFocus End If2.サブフォームの最終行から親フォームにフォーカスをセットする方法RecordsetのMoveLastを使って、イベント行のBookmarkと最終行のBookmarkを比較します。
同じの場合は、親フォームにフォーカスをセットします。
その後は、サブフォームのフォーカスを最初行の最初コントロールにセットします。
上記の二つはサブフォームにフォーカスをセットするサンプルです。お役立てください。