I found the solution and am posting it in case someone else needs it (or I forget and come back in a month or two)
The NotInList event has two arguments with it
NewData as string and
Response as integer.
The new data is the text that was entered in the box.
The response can be one of three things.
acDataErrDisplay (default) doesn't allow the change
acDataErrContinue is used after displaying a custom message box, typically used to tell the user that the entry is not in the list and allow user to decide if he wants to add it. If he selects NO, the response will be set to acDataErrContinue.
acDataErrAdded is used in the same manner as acDataErrContinue except it is that it is used when the user selects YES.
So it would look something like this:
Private Sub Combo12_NotInList(NewData As String, Response As Integer)
If MsgBox("'" & NewData & "' is not in the list. Do you wish to add it?", vbYesNo) = vbYes Then
DoCmd.OpenForm "TableNames", acNormal, , , , , NewData
Response = acDataErrAdded
Else
Response = acDataErrContinue
End If
End Sub
The OnOpen event of the TableNames form (Used for adding new table names to a list) goes to a new record, checks if OpenArgs is null. If it is, it continues, if it isn't, its value is added to the TableName field and the form is closed