I'm not sure whether it will make a difference, but since the key fields are long numbers and not just integers, I wonder if the variable intPeoKey should also be declared as a long number data type. Also, did you verify that Access actually sees what you expect it to from Forms![frmEstH]![txtEstFor]? You can always throw in a debug.print statement to display that value to confirm. Also, make sure to close the two recordsets and set the objects to nothing so your code is as clean as possible.
Code:
Private Sub txtRequestedBy_NotInList(NewData As String, Response As Integer)
Response = acDataErrContinue
Dim intAnswer As Integer
Dim dbs As DAO.Database, rst As DAO.Recordset, rst1 As DAO.Recordset
Dim strOldValue As String
Dim strName As String
Dim varCost As Variant
Dim strSQL As String
Dim intPeoKey As Integer
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("tblPeople", dbOpenDynaset)
Set rst1 = dbs.OpenRecordset("tblOrgPeo", dbOpenDynaset)
intAnswer = MsgBox("Add " & NewData & " to Organizations?", vbQuestion + vbYesNo) 'Caption of ComboBox
If intAnswer = vbYes Then
'tblOrgKey is already at Forms![frmEstH]![txtEstFor]
With rst 'Add the tblPeople record
.AddNew
!Last = NewData
intPeoKey = !Key
.Update
End With
With rst1 ' Add the tblOrgPeo record
.AddNew
!OrgKey = Forms![frmEstH]![txtEstFor]
!PeoKey = intPeoKey
.Update
End With
rst.close
rst1.close
Set rst=nothing
set rst1=nothing
Response = acDataErrAdded ' Requery the combo box list.
Else
Me.Undo
Response = acDataErrContinue ' Require the user to select
' an existing item
End If
End Sub