The FocusSetOnCurrent FunctionPublic Function FocusSetOnCurrent( _ strForm As String, _ Optional strControlIfNew As String, _ Optional strControlElse As String _ ) As Integer 'Copyright (c) Brendan Reynolds/Timarco Ltd, 1999. 'All rights reserved. 'e-mail [email protected] 'This function sets the focus to the control specified 'in the strControlIfNew argument if the form specified 'in the strForm argument is at the new record, or to the 'control specified in the strControlElse argument if the 'form is not at the new record. 'Arguments 'strForm: The name of the form. 'strControlIfNew: The name of the control that is to 'receive the focus if the form is at the new record. 'strControlElse: The name of the control that is to 'receive the focus if the form is not at the new record. 'Return Values 'Returns 1 if focus was set to strControlIfNew, 2 if 'focus was set to strControlElse, 3 if focus was not set. 'Use (from the Current event of a form) 'intResult = FocusSetOnCurrent(strForm:=Me.Name, _ ' strControlIfNew:="SomeControl", _ ' strControlElse:="SomeOtherControl" _ ') 'If the form is at the new record, focus is set to the 'control "SomeControl", otherwise focus is set to the 'control "SomeOtherControl. 'Both strControlIfNew and strControlElse are optional. 'Either can be omitted, if we wish to change the focus 'only if the form is at the new record, or only if the 'form is not at the new record. Both can be omitted, and 'this will not raise any error, but the function would 'have no effect. On Error GoTo Err_Routine Dim lngErrNum As Long Dim frm As Form Set frm = Forms(strForm) If (frm.NewRecord = True) And _ (strControlIfNew <> vbNullString) Then frm(strControlIfNew).SetFocus FocusSetOnCurrent = 1 ElseIf (frm.NewRecord = False) And _ (strControlElse <> vbNullString) Then frm(strControlElse).SetFocus FocusSetOnCurrent = 2 Else FocusSetOnCurrent = 3 End If Exit_Routine: On Error Resume Next Set frm = Nothing Exit Function Err_Routine: lngErrNum = Err.Number Select Case Err ' Case Else Err.Raise lngErrNum Resume Exit_Routine End Select End Function Download this function in plain text format, ready for import into your own Microsoft Access 97 or Microsoft Access 2000 application, here. |