Я продолжаю получать исключение приведения при выполнении подпрограммы в пользовательской форме. Он распознает нулевое значение, когда читает txtMileage.text = "" и выдает ошибку, потому что пытается определить, больше ли значение 300

If btnYes.Checked = True And txtMileage.Text > 300 Then MsgBox("Distance Exceeds 300 Miles") txtMileage.Focus() Exit Sub

Мне нужно, чтобы игнорировать проверку значения, когда btnNo.checked = true и txtMileage.text = ""

Какие-нибудь мысли?

Private Sub cmdCalculate_Click(sender As Object, e As EventArgs) Handles cmdCalculate.Click
    If btnNo.Checked = False And btnYes.Checked = False Then
        MsgBox("Please select yes or no")
        Exit Sub
    End If
    If btnYes.Checked = True And txtMileage.Text = "" Then
        MsgBox("Please instert Mileage")
        txtMileage.Focus()
        Exit Sub
    End If
    If btnNo.Checked = True And txtMileage.Text = "" Then

    End If
    If btnYes.Checked = True And txtMileage.Text > 300 Then
        MsgBox("Distance Exceeds 300 Miles")
        txtMileage.Focus()
        Exit Sub
    End If
End Sub

обновляется с сообщением об ошибке, он по-прежнему выдает его в

If btnYes.Checked = True And txtMileage.Text = "" Then MsgBox("Please insert Mileage") txtMileage.Focus() Exit Sub ElseIf btnYes.Checked = True And txtMileage.Text > 300 Then MsgBox("Distance Exceeds 300 Miles") txtMileage.Focus() Exit Sub End If

ElseIf btnYes.Checked = True And txtMileage.Text > 300 Then , кажется, проблемная линия в последний Then

2 ответа2

1

Как насчет просто проверить, если .Text содержит числовое значение и, если нет, устанавливает его в 0?

If Not IsNumeric(txtMileage.Text) Then txtMileage.Text = 0

Вы можете или не можете сохранить его как переменную, чтобы избежать изменения элемента управления.

Dim txt as Variant
txt = txtMileage.Text
If Not IsNumeric(txt) Then txt  = 0
1

Поместите это как исключительную опцию через elseif txtMileage.Text = "" . Не будет шансов, что он выполнит проверку, if >300 когда пусто.

Private Sub cmdCalculate_Click(sender As Object, e As EventArgs) Handles cmdCalculate.Click
    If btnNo.Checked = False And btnYes.Checked = False Then
        MsgBox("Please select yes or no")
        Exit Sub
    End If
    If btnYes.Checked = True And txtMileage.Text = "" Then
        MsgBox("Please instert Mileage")
        txtMileage.Focus()
        Exit Sub
    Elseif  btnYes.Checked = True And txtMileage.Text > 300 Then
        MsgBox("Distance Exceeds 300 Miles")
        txtMileage.Focus()
        Exit Sub
    End If
    If btnNo.Checked = True And txtMileage.Text = "" Then

    End If
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .