You are almost there. You need to be aware that there are 2 properties to be concerned with: the .VALUE property and the .TEXT property.
The .VALUE property (the default property) holds the data after it has been committed. The .TEXT value is the property that holds the data until it is committed, which then replaces the current data. (BTW, the old data is still recoverable, to some extent, through the .OLDVALUE property)
In one place you used the .TXT property, but it was in the wrong place.
I also found where there was a misplaced 'dot':
Code:
strSQL = "SELECT * FROM qry.Kiosk "_
See the dot in the query name?
I have modified your code; it should run without errors.
Code:
Private Sub TypeDown(strSearch As String)
On Error Resume Next
Dim strSQL As String
If strSearch = "" Then
strSQL = ""
Else
strSQL = "SELECT * FROM qryKiosk WHERE res_last_name Like '" & strSearch & "*'"
End If
List0.RowSource = strSQL
End Sub
Private Sub btnNewSearch_Click()
Me.txtSearch.Value = ""
Me.txtSearch.SetFocus
List0.RowSource = ""
End Sub
Private Sub txtSearch_KeyUp(KeyCode As Integer, Shift As Integer)
'if text box is null, replace with an empty string
TypeDown NZ(Me.txtSearch.Text), "")
' your way
' TypeDown IIf(IsNull(Me.txtSearch.Text), "", Me.txtSearch.Text)
End Sub