У меня есть пользовательская форма с текстовыми полями, и некоторые из них должны содержать целые числа. Я нашел где-то в Интернете (я думаю, на этом сайте) эту функцию IsInteger, которую я сохранил в модуле только для функций:
Function IsInteger()
If IsNumeric(testsubject) Then
If testsubject - Int(testsubject) <> 0 Then
integerYes = True
Else: integerYes = False
End If
End If
End Function
Следующий блок кода относится к одному из текстовых полей пользовательской формы:
Private Sub IB_LoanTermYears_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Data validation
If Me.IB_LoanTermYears.Value = "" Then
ElseIf IsNumeric(Me.IB_LoanTermYears.Value) = False Then
blahAnswer = MsgBox("Please enter a valid number.", , "Invalid Entry")
Me.IB_LoanTermYears.SetFocus
ElseIf IsInteger(Me.IB_LoanTermYears.Value) = False Then
blahAnswer = MsgBox("Please enter a whole number.", , "Invalid Entry")
Me.IB_LoanTermYears.SetFocus
ElseIf Me.IB_LoanTermYears.Value < 0 Then
blahanswer MsgBox("Please enter a positive number.", , "Invalid Entry")
Me.IB_LoanTermYears.SetFocus
End If
End Sub
Когда я выхожу из текстового поля, я получаю ошибку времени выполнения 13 с выделенным ElseIf IsInteger(Me.IB_LoanTermYears.Value) = False Then
. Что дает? Я видел очень похожий пост, в котором был сделан вывод о том, что другие пустые текстовые поля портят, но я не понимаю, как это может повлиять на это текстовое поле, поскольку они никак не связаны, за исключением того, что они в той же форме пользователя.
Спасибо!