The debug window merely adds to itself, so the first two lines are from your previous attempt and the third from your last attempt.
Delete them all if it is confusing you, so you only get to see the latest when testing.
Here is how I did it in one of my DBs. Just another way, due to my inexperience. Do not worry about the mixed_case function, that was just for my preference/use.
Private Sub Crew_ID_NotInList(NewData As String, Response As Integer)
Dim txtSurname As String, txtInitials As String, strPKField As String
Dim intNewID As Long
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Response = acDataErrContinue
If MsgBox(NewData & " is not in list. Add it?", vbYesNo) = vbYes Then
strSQL = "SELECT * from Crew WHERE 1 = 0"
Set db = CurrentDb()
Set rs = db.OpenRecordset(strSQL)
txtSurname = Left(mixed_case(NewData), InStr(1, NewData, " ") - 1)
txtInitials = UCase(Trim(Mid(NewData, InStr(1, NewData, " ") + 1)))
rs!Surname = txtSurname
rs!Initials = txtInitials
strPKField = rs(0).Name 'Find name of Primary Key (ID) Field
rs.Move 0, rs.LastModified
intNewID = rs(strPKField)
Response = acDataErrAdded
Set rs = Nothing
Set db = Nothing
Response = acDataErrDisplay