Ignora um campo de texto vazio

0

Continuorecebendoumaexceçãoaoexecutarumasub-rotinaemumformuláriodeusuário.ElereconheceovalornuloquandolêtxtMileage.text="" e gera um erro porque está tentando determinar se o valor é maior que 300

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

Eu preciso ignorar a verificação do valor quando btnNo.checked = true e txtMileage.text = ""

Alguma opinião?

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

atualizado com a mensagem de erro, ele ainda é lançado em

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 parece ser a linha do problema no último Then

    
por Joe 11.03.2015 / 16:03

2 respostas

1

Que tal apenas verificar se .Text contém um valor numérico e, se não, defini-lo como 0 ?

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

Você pode ou não querer armazená-lo como uma variável para evitar alterar o controle.

Dim txt as Variant
txt = txtMileage.Text
If Not IsNumeric(txt) Then txt  = 0
    
por 11.03.2015 / 16:44
1

Coloque como opção excluyent em elseif de txtMileage.Text = "" . Não haverá chance de fazer a verificação if >300 quando estiver vazia.

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
    
por 11.03.2015 / 16:14

Tags