VBA isnumber istext функция проблема - PullRequest
0 голосов
/ 31 мая 2011

я пытаюсь проверить, является ли число текстом или числом в банковской системе.Если значение неверно, оно должно стереть и отправить сообщение об ошибке, но мой код не работает вообще ... кто-то может мне помочь?вот код:

Private Sub TextBox1_Change()

   name = TextBox1

   If Application.IsText(name) = True Then
      IsText = True
   Else
      MsgBox "Insert only words"
      Selection.name.Delete
   End If

End Sub

Ответы [ 2 ]

1 голос
/ 31 мая 2011

Я думаю, что вы должны использовать вместо 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

Я уверен, что код мог бы быть лучше структурирован, но есть что-то вроде того, что вам нужно. В этом случае он просто стирает текстовое поле, если введено число. Очевидно, что для вашего текстового поля все должно быть наоборот: вы хотите, чтобы число содержало число.

0 голосов
/ 14 февраля 2019
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...