Here is a function where I am doing what I think you are talking about it was created by modifying other posts on this website - thanks to all who contributed:
Function LogError()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim ctlCurrentControl As Control
Dim strControlName As String
Dim strFormName As String
Dim varTerminalId As Variant
Dim varDbUser As Variant
Dim varNetUser As Variant
Set db = CurrentDb
Set rst = db.OpenRecordset("tbl ErrorLog")
'get computer environment
varTerminalId = fOSMachineName()
varTerminalId = Left(varTerminalId, 35) 'avoid error if field too large to write to table
varNetUser = fOSUserName()
varNetUser = Left(varNetUser, 35) 'avoid error if field too large to write to table
Set ctlCurrentControl = Screen.ActiveControl
strControlName = ctlCurrentControl.Name
strFormName = "frm User Sign In"
If isOpen(strFormName) Then
If IsNull(Forms![frm User Sign In]![cmbUser]) Then
'not signed in
varDbUser = "Not signed in"
Else
varDbUser = DLookup("[EmpLast]", "tbl Employees", "[EmpID]= Forms![frm User Sign In]![cmbUser]") & ", " & DLookup("[EmpFirst]", "tbl Employees", "[EmpID]= Forms![frm User Sign In]![cmbUser]")
End If
Else
varDbUser = "User Sign In Form not Open"
End If
rst.AddNew
rst.Fields("TimeDateStamp") = Now 'Timestamp
rst.Fields("Date") = Date 'ShortDate for GroupBy in queries and sorting
rst.Fields("ErrorNumber") = Err.Number
rst.Fields("ErrorDescription") = Err.Description
rst.Fields("FormName") = Screen.ActiveForm.FormName
rst.Fields("ControlName") = strControlName
rst.Fields("TerminalID") = varTerminalId
rst.Fields("dbUserName") = varDbUser
rst.Fields("NetworkUserName") = varNetUser
rst.Update
rst.Close
Set rst = Nothing
Set db = Nothing
End Function