Игнорировать пустое текстовое поле

Игнорировать пустое текстовое поле

введите описание изображения здесь

Я продолжаю получать исключение приведения при запуске подпрограммы в пользовательской форме. Она распознает значение null при чтении 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

решение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

решение2

Поставьте его как исключающий вариант через 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

Связанный контент