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