简体   繁体   中英

Pop Out box if the data is not within the range

I have develop a userform inside my excel workbook.

I wish to have a alert message pop out on submit button is clicked when meet the following requirement:

  1. If combobox2 value equals to Ni, the value in combobox6 need to within 50T, 30U, 20A and 100

  2. If value in combobox6 is not within those value, when user hit the submit button, it will show a message box to alert user that the value for combobox6 is not within the specs, if user choose on Yes, then excel will store the data, if user select No, user will require to re-select the data.

My userform code will be look like this:

Private Sub CommandButton1_Click()    
Sheets("Overall").Activate

With Me
    If Len(.ComboBox1.Value) * Len(.TextBox2.Value) * Len(.TextBox3.Value) * Len(.TextBox1.Value) * Len(.ComboBox7.Value) * Len(.ComboBox3.Value) * Len(.TextBox4.Value) * Len(.TextBox5.Value) * Len(.ComboBox4.Value) * Len(.ComboBox6.Value) * Len(.ComboBox5.Value) * Len(.TextBox7.Value) * Len(.TextBox8.Value) * Len(.TextBox6.Value) * Len(.ComboBox2.Value) * Len(.TextBox9.Value) = 0 Then
        MsgBox "Please Complete All Fields Before Submit"
    Else
        If TextBox8.Value > 3 Then
            If MsgBox("TextBox8 > 3" & vbCrLf & "Continue?", vbYesNo) = vbNo Then
                MsgBox "Please change the value of TextBox8"
                TextBox8.SetFocus
            Else             
                eRow = Sheet4.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
                Cells(eRow, 2).Value = ComboBox1.Text
                Cells(eRow, 5).Value = TextBox1.Text
                Cells(eRow, 1).Value = ComboBox7.Text
                Cells(eRow, 6).Value = ComboBox3.Text
                Cells(eRow, 15).Value = ComboBox2.Text
                Cells(eRow, 17).Value = TextBox2.Text
                Cells(eRow, 18).Value = TextBox3.Text
                Cells(eRow, 9).Value = ComboBox4.Text
                Cells(eRow, 11).Value = ComboBox5.Text
                Cells(eRow, 7).Value = TextBox4.Text
                Cells(eRow, 8).Value = TextBox5.Text
                Cells(eRow, 14).Value = TextBox6.Text
                Cells(eRow, 16).Value = ComboBox6.Text
                Cells(eRow, 12).Value = TextBox7.Text
                Cells(eRow, 13).Value = TextBox8.Text
                Cells(eRow, 19).Value = TextBox9.Text
            End If
        End If
    End If
End With
End Sub

-----------------------EDIT---------------------------------------------

Private Sub CommandButton1_Click()

Sheets("Overall").Activate

Dim m As Variant, RequiredRange As Variant
Dim msg As Integer

    RequiredRange1 = Array("30S", "30A", "40S")
    RequiredRange2 = Array("10A", "15S", "15A", "20S")
    RequiredRange3 = Array("30S", "30A", "40S")

If Me.ComboBox2.Value = "NiPd" Then
m = Application.Match(ComboBox6.Value, RequiredRange1, False)
    If IsError(m) Then

    msg = MsgBox("Stabilizer Reading:" & ComboBox6.Value & Chr(10) & _
     "Selection Value Out Of Range" & Chr(10) & Chr(10) & _
     "Do You Want To Continue With Submission?", 36, "Warning")

    If msg = 7 Then Me.ComboBox6.SetFocus: Exit Sub
    End If
    End If


   If Me.ComboBox2.Value = "NiAu" Then

    m = Application.Match(ComboBox6.Value, RequiredRange2, False)
    If IsError(m) Then

    msg = MsgBox("Stabilizer Reading:" & ComboBox6.Value & Chr(10) & _
     "Selection Value Out Of Range" & Chr(10) & Chr(10) & _
     "Do You Want To Continue With Submission?", 36, "Warning")

    If msg = 7 Then Me.ComboBox6.SetFocus: Exit Sub
    End If
    End If

    If Me.ComboBox2.Value = "NiPdAu" Then

    m = Application.Match(ComboBox6.Value, RequiredRange3, False)
    If IsError(m) Then

    msg = MsgBox("Stabilizer Reading:" & ComboBox6.Value & Chr(10) & _
     "Selection Value Out Of Range" & Chr(10) & Chr(10) & _
     "Do You Want To Continue With Submission?", 36, "Warning")

    If msg = 7 Then Me.ComboBox6.SetFocus: Exit Sub
    End If
    End If

With Me
    If Len(.ComboBox1.Value) * Len(.TextBox1.Value) * Len(.ComboBox7.Value) * Len(.ComboBox3.Value) * Len(.ComboBox2.Value) * Len(.TextBox2.Value) * Len(.TextBox3.Value) * Len(.ComboBox4.Value) * Len(.ComboBox5.Value) * Len(.TextBox4.Value) * Len(.TextBox5.Value) * Len(.TextBox6.Value) * Len(.ComboBox6.Value) * Len(.TextBox7.Value) * Len(.TextBox8.Value) * Len(.TextBox9.Value) = 0 Then
        MsgBox "Please Complete All Fields Before Submit"
    Else

        If CSng(.TextBox8.Text) > 3 Then
            If MsgBox("Plating Rate below than 3.0 um, Kindly stop production and use another Ni Bath" & vbLf & vbLf & _
                      "Do you wish to continue?", vbYesNo, "Exceeds") = vbNo Then

                MsgBox "user to re-type the value in TextBox8.", vbInformation, "Warning"

        If CSng(.TextBox8.Text) = 3.2 Then
            If MsgBox("Plating Rate below than 3.2 um , Standby the next Ni bath and start heat up to 65°" & vbLf & vbLf & _
                      "Do you wish to continue?", vbYesNo, "Exceeds") = vbNo Then

                MsgBox "user to re-type the value in TextBox8.", vbInformation, "Warning"


                Exit Sub
             End If
                      End If
         End If

        eRow = Sheet4.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
        Cells(eRow, 2).Value = ComboBox1.Text
        Cells(eRow, 5).Value = TextBox1.Text
        Cells(eRow, 1).Value = ComboBox7.Text
        Cells(eRow, 6).Value = ComboBox3.Text
        Cells(eRow, 15).Value = ComboBox2.Text
        Cells(eRow, 17).Value = TextBox2.Text
        Cells(eRow, 18).Value = TextBox3.Text
        Cells(eRow, 9).Value = ComboBox4.Text
        Cells(eRow, 11).Value = ComboBox5.Text
        Cells(eRow, 7).Value = TextBox4.Text
        Cells(eRow, 8).Value = TextBox5.Text
        Cells(eRow, 14).Value = TextBox6.Text
        Cells(eRow, 16).Value = ComboBox6.Text
        Cells(eRow, 12).Value = TextBox7.Text
        Cells(eRow, 13).Value = TextBox8.Text
        Cells(eRow, 19).Value = TextBox9.Text
         End If
    End If
End With
End Sub

Take the habit to increment your code properly with tab and shift+tab for better readability

This should help you :

Private Sub CommandButton1_Click()

Sheets("Overall").Activate

Dim m As Variant, RequiredRange As Variant
Dim msg As Integer

    RequiredRange1 = Array("30S", "30A", "40S")
    RequiredRange2 = Array("10A", "15S", "15A", "20S")
    RequiredRange3 = Array("30S", "30A", "40S")

If Me.ComboBox2.Value = "NiPd" Then
    m = Application.Match(ComboBox6.Value, RequiredRange1, False)
    If IsError(m) Then
        msg = MsgBox("Stabilizer Reading:" & ComboBox6.Value & Chr(10) & _
            "Selection Value Out Of Range" & Chr(10) & Chr(10) & _
            "Do You Want To Continue With Submission?", 36, "Warning")
        If msg = 7 Then Me.ComboBox6.SetFocus
        Exit Sub
    End If
End If


If Me.ComboBox2.Value = "NiAu" Then
    m = Application.Match(ComboBox6.Value, RequiredRange2, False)
    If IsError(m) Then
        msg = MsgBox("Stabilizer Reading:" & ComboBox6.Value & Chr(10) & _
            "Selection Value Out Of Range" & Chr(10) & Chr(10) & _
            "Do You Want To Continue With Submission?", 36, "Warning")
        If msg = 7 Then Me.ComboBox6.SetFocus
        Exit Sub
    End If
End If

If Me.ComboBox2.Value = "NiPdAu" Then
    m = Application.Match(ComboBox6.Value, RequiredRange3, False)
    If IsError(m) Then
        msg = MsgBox("Stabilizer Reading:" & ComboBox6.Value & Chr(10) & _
             "Selection Value Out Of Range" & Chr(10) & Chr(10) & _
             "Do You Want To Continue With Submission?", 36, "Warning")
        If msg = 7 Then Me.ComboBox6.SetFocus
        Exit Sub
    End If
End If

With Me
    If Len(.ComboBox1.Value) * Len(.TextBox1.Value) * Len(.ComboBox7.Value) * Len(.ComboBox3.Value) * Len(.ComboBox2.Value) * Len(.TextBox2.Value) * Len(.TextBox3.Value) * Len(.ComboBox4.Value) * Len(.ComboBox5.Value) * Len(.TextBox4.Value) * Len(.TextBox5.Value) * Len(.TextBox6.Value) * Len(.ComboBox6.Value) * Len(.TextBox7.Value) * Len(.TextBox8.Value) * Len(.TextBox9.Value) = 0 Then
        MsgBox "Please Complete All Fields Before Submit"
    Else
        If CSng(.TextBox8.Text) > 3 Then
            If MsgBox("Plating Rate below than 3.0 um, Kindly stop production and use another Ni Bath" & vbLf & vbLf & _
                      "Do you wish to continue?", vbYesNo, "Exceeds") = vbNo Then
                    MsgBox "user to re-type the value in TextBox8.", vbInformation, "Warning"
                If CSng(.TextBox8.Text) = 3.2 Then
                    If MsgBox("Plating Rate below than 3.2 um , Standby the next Ni bath and start heat up to 65°" & vbLf & vbLf & _
                              "Do you wish to continue?", vbYesNo, "Exceeds") = vbNo Then
                        MsgBox "user to re-type the value in TextBox8.", vbInformation, "Warning"
                        Exit Sub
                    End If
                End If
            End If
            eRow = Sheet4.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
            Cells(eRow, 2).Value = ComboBox1.Text
            Cells(eRow, 5).Value = TextBox1.Text
            Cells(eRow, 1).Value = ComboBox7.Text
            Cells(eRow, 6).Value = ComboBox3.Text
            Cells(eRow, 15).Value = ComboBox2.Text
            Cells(eRow, 17).Value = TextBox2.Text
            Cells(eRow, 18).Value = TextBox3.Text
            Cells(eRow, 9).Value = ComboBox4.Text
            Cells(eRow, 11).Value = ComboBox5.Text
            Cells(eRow, 7).Value = TextBox4.Text
            Cells(eRow, 8).Value = TextBox5.Text
            Cells(eRow, 14).Value = TextBox6.Text
            Cells(eRow, 16).Value = ComboBox6.Text
            Cells(eRow, 12).Value = TextBox7.Text
            Cells(eRow, 13).Value = TextBox8.Text
            Cells(eRow, 19).Value = TextBox9.Text
        End If
    Else
        eRow = Sheet4.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
        Cells(eRow, 2).Value = ComboBox1.Text
        Cells(eRow, 5).Value = TextBox1.Text
        Cells(eRow, 1).Value = ComboBox7.Text
        Cells(eRow, 6).Value = ComboBox3.Text
        Cells(eRow, 15).Value = ComboBox2.Text
        Cells(eRow, 17).Value = TextBox2.Text
        Cells(eRow, 18).Value = TextBox3.Text
        Cells(eRow, 9).Value = ComboBox4.Text
        Cells(eRow, 11).Value = ComboBox5.Text
        Cells(eRow, 7).Value = TextBox4.Text
        Cells(eRow, 8).Value = TextBox5.Text
        Cells(eRow, 14).Value = TextBox6.Text
        Cells(eRow, 16).Value = ComboBox6.Text
        Cells(eRow, 12).Value = TextBox7.Text
        Cells(eRow, 13).Value = TextBox8.Text
        Cells(eRow, 19).Value = TextBox9.Text
    End If
End With

End Sub

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM