¿Cómo devuelve esto un valor en blanco?

Por lo tanto, este código está destinado a servir como un sistema de búsqueda simple para ir a ciertos registros en un conjunto de registros. Originalmente lo tenía, así que tuvieron que hacer clic en el botón btnGoToID para realizar la búsqueda. Decidí hacerlo un poco más fácil de usar y hacerlo para que el campo de búsqueda escuchara el botón Enter y eso también llevaría a cabo la búsqueda.

El problema que me encuentro cuando el código llega astrID = Trim(Nz(Me.txtSearch.Value, "")) el valor regresará aleatoriamente como una cadena vacía, aunque visualmente puedo ver que hay un valor en el cuadro de texto.

No he podido reducir ningún patrón para cuando ocurre este problema. En este punto, ni siquiera sé cómo solucionar este problema, ni las palabras para buscarlo podrían arrojar resultados en Google. Todo lo que puedo decir es que parece que cambiar entre registros afectará si la búsqueda se realiza o no.

Esto siempre ha funcionado hasta que puse el subprocedimiento txtSearch_KeyPress.

'============================================================================
' txtSearch_KeyPress
'============================================================================
Private Sub txtSearch_KeyPress(KeyAscii As Integer)
    'If user pressed enter
    If KeyAscii = 13 Then
        Call btnGoToID_Click
    End If
End Sub



'============================================================================
' btnGoToID_Click
'============================================================================
' <<Purpose>>
' Allow the user to search for a specific ID 
'============================================================================
Private Sub btnGoToID_Click()
On Error GoTo Err_Handler

    Dim rs As Recordset
    Dim strID As String

    Set rs = Me.RecordsetClone

    strID = Trim(Nz(Me.txtSearch.Value, ""))

    If (strID <> "") Then

        'Go to the ID
        rs.FindFirst "ID = '" & strID & "'"

        If rs.NoMatch Then
            MsgBox "ID does not exist"
        Else

            'If we have a match, set the record as the current record
            Me.Bookmark = rs.Bookmark
        End If
    Else
        MsgBox "Please enter a valid ID.", vbOKOnly, "Invalid ID"
    End If


Exit_Handler:
On Error Resume Next

    Me.txtSearch.Value = ""
    rs.Close
    Set rs = Nothing
    Exit Sub

Err_Handler:
    Call LogError(Err.Number, Err.Description, "txtSearch on " & Me.Name)
    Resume Exit_Handler
End Sub

Después de la conversación en los comentarios, he reducido esta pregunta para que sea mucho más simple. Esto produce un mensaje de error "Uso no válido de nulo" incluso después de que haya varios caracteres en el campo de texto. ¿Por qué sucedería eso y qué puedo hacer para que recoja los valores en el cuadro de texto?

'============================================================================
' txtUnitNoToSearch_KeyPress
'============================================================================
Private Sub txtUnitNoToSearch_KeyPress(KeyAscii As Integer)
    MsgBox Me.txtUnitNoToSearch
End Sub

Respuestas a la pregunta(1)

Su respuesta a la pregunta