Ich erhalte immer eine Cast-Ausnahme, wenn ich eine Subroutine in einem Benutzerformular ausführe. Sie erkennt den Nullwert beim Lesen txtMileage.text = ""
und gibt einen Fehler aus, weil sie versucht festzustellen, ob der Wert größer als 300 ist.
If btnYes.Checked = True And txtMileage.Text > 300 Then MsgBox("Distance Exceeds 300 Miles") txtMileage.Focus() Exit Sub
Ich brauche es, um die Überprüfung des Wertes zu ignorieren, wenn btnNo.checked = true
undtxtMileage.text = ""
Irgendwelche Gedanken?
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
mit Fehlermeldung aktualisiert, es wirft es immer noch auf
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
scheint die Problemlinie am Ende zu seinThen
Antwort1
Wie wäre es, einfach zu prüfen, ob .Text
ein numerischer Wert enthalten ist und ihn, wenn nicht, auf festzulegen 0
?
If Not IsNumeric(txtMileage.Text) Then txtMileage.Text = 0
Um eine Änderung der Steuerung zu vermeiden, möchten Sie es möglicherweise stattdessen als Variable speichern.
Dim txt as Variant
txt = txtMileage.Text
If Not IsNumeric(txt) Then txt = 0
Antwort2
Setzen Sie es als Ausschlussoption durch elseif
. txtMileage.Text = ""
Es besteht keine Möglichkeit, dass die Prüfung durchgeführt wird if >300
, wenn leer ist.
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