Someone answered this the other day. It is very good so I'll retype it for you.
The trick is to set the LimitToList property of the combo-box to True - that way you can trap the fact that you're trying to enter something not in the list.
The event that your code goes in is the OnNotInList event. Here's an example
Private Sub ComboBoxName_NotInList(Newdata as string,response as integer)
Dim rec As Recordset
If msgbox("Value is not in list. Will add it now", vbOKCancel, "Adding Data") = vbOK Then
Set rec = CurrentDb.OpenRecordset("TableName")
rec.AddNew
rec!FieldName = NewData
rec.Update
Set rec = Nothing
Response = acDataErrAdded
Else
Response = acDataErrContinue
ComboBoxName.Undo
End If
End Sub
I can't remember who wrote this first but thanks anyway
Colin