ละเว้นฟิลด์ข้อความว่างเปล่า


0

ป้อนคำอธิบายรูปภาพที่นี่

ฉันยังคงได้รับข้อยกเว้น cast เมื่อรันรูทีนย่อยใน userform มันรับรู้ค่า 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


ฉันไม่รู้อะไรเกี่ยวกับ vba คุณสามารถใช้ regex เพื่อตรวจสอบฟิลด์ได้หรือไม่?
malakrsnaslava

มันไม่ควรที่จะไปที่ Else ถ้า.Text = ""นั่นหมายความว่า.Text <> ""อย่างนั้น ลองใส่ในบรรทัดต่อไปนี้ก่อนที่Ifคำสั่งเพื่อดูว่าค่าของ.Textคืออะไร: Debug.Print "~" & txtMileage.Text & "~"(หากหน้าต่าง Immediate ไม่ได้เปิดคุณสามารถใช้MsgboxแทนDebug.Print)
Engineer Toast

อาจเป็นได้ว่าฉันจำเป็นต้องแปลงสตริงเป็นจำนวนเต็ม ...
Joe

ข้อความ = การแปลงจากสตริง "" เป็นประเภท "สองครั้ง" ไม่ถูกต้อง ฉันไม่แน่ใจว่าข้อความแสดงข้อผิดพลาดนี้มีความหมายว่าอย่างไร ...
Joe

คำตอบ:


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

การปรับรหัสเล็กน้อยของฉันและวิธีนี้ใช้ได้ผล
Joe

1

ใส่เป็นตัวเลือก excluyent ผ่านของ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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.