Here's an example that works with 4 textboxes. Should work with 10 or more OK.
Code:
Option Compare Database
Option Explicit
Private Sub txtbox1_Exit(Cancel As Integer)
On Error GoTo txtbox1_Exit_Error
'On Error Resume Next
Call FunctionUpdateCalcs(Screen.PreviousControl, Screen.ActiveControl)
On Error GoTo 0
Exit Sub
txtbox1_Exit_Error:
Select Case Err
Case 2483
Resume Next
Case Else
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure txtbox1_Exit of Sub Form_frmCalcs"
End Select
End Sub
Private Sub txtbox2_Exit(Cancel As Integer)
On Error GoTo txtbox2_Exit_Error
Call FunctionUpdateCalcs(Screen.PreviousControl, Screen.ActiveControl)
On Error GoTo 0
Exit Sub
txtbox2_Exit_Error:
Select Case Err
Case 2483
Resume Next
Case Else
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure txtbox1_Exit of Sub Form_frmCalcs"
End Select
End Sub
Private Sub txtbox3_Exit(Cancel As Integer)
On Error GoTo txtbox3_Exit_Error
Call FunctionUpdateCalcs(Screen.PreviousControl, Screen.ActiveControl)
On Error GoTo 0
Exit Sub
txtbox3_Exit_Error:
Select Case Err
Case 2483
Resume Next
Case Else
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure txtbox1_Exit of Sub Form_frmCalcs"
End Select
End Sub
Private Sub txtbox4_Exit(Cancel As Integer)
On Error GoTo txtbox4_Exit_Error
Call FunctionUpdateCalcs(Screen.PreviousControl, Screen.ActiveControl)
On Error GoTo 0
Exit Sub
txtbox4_Exit_Error:
Select Case Err
Case 2483
Resume Next
Case Else
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure txtbox1_Exit of Sub Form_frmCalcs"
End Select
End Sub
Private Sub txtbox5_Exit(Cancel As Integer)
On Error GoTo txtbox5_Exit_Error
Call FunctionUpdateCalcs(Screen.PreviousControl, Screen.ActiveControl)
On Error GoTo 0
Exit Sub
txtbox5_Exit_Error:
Select Case Err
Case 2483
Resume Next
Case Else
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure txtbox1_Exit of Sub Form_frmCalcs"
End Select
End Sub
Public Function FunctionUpdateCalcs(pctl As Control, actl As Control)
'Debug.Print pctl.Name, actl.Name
If IsNull(actl.Value) Then
'Do Nothing
Else
pctl.Value = pctl - actl
End If
End Function
Added error handling. When form is first initialized, there is NO previous control, resulting in an error.