Я думаю, что вы должны использовать вместо name = TextBox1.Text
. Это, вероятно, дает вам ошибку в этой строке.
Кроме того, вы можете подождать, пока пользователь не закончит вводить ответ. Я полагаю, что измененное событие будет запускаться при каждом нажатии символа. AfterUpdate
будет запущен после того, как вы перейдете на вкладку или щелкните вдали от текстового поля.
И действительно, вместо удаления ответа (что, я думаю, не сработает), вы должны просто установить пустое текстовое поле обратно в пустую строку.
Private Sub TextBox1_AfterUpdate()
If Not MyIsANumber(TextBox1.Text) Then
MsgBox ("It's Text")
Else
TextBox1.Text = ""
End If
End Sub
Function MyIsANumber(str As String) As Boolean
For i = 1 To Len(str)
If IsNumeric(Mid(str, i, 1)) Then
MyIsANumber = True
Exit Function
End If
Next
MyIsANumber = False
End Function
Я уверен, что код мог бы быть лучше структурирован, но есть что-то вроде того, что вам нужно. В этом случае он просто стирает текстовое поле, если введено число. Очевидно, что для вашего текстового поля все должно быть наоборот: вы хотите, чтобы число содержало число.