Look at your code:
If Asc(e.KeyChar) < 65 Or Asc(e.KeyChar) < 90 _
And Asc(e.KeyChar) < 97 Or Asc(e.KeyChar) > 122 Then
If it's below 65, it's below 90.
And what's the precedence of And and Or? Is it evaluated as
(a Or b) And (c Or d)
Or as
a Or (b And c) Or d
Try this:
If Char.IsLetterOrDigit(e.KeyChar) OrElse e.KeyChar = " "c OrElse e.KeyChar = CChar(Keys.Back) Then
Else
MessageBox.Show("Please enter letters only")
e.Handled = True
End If