我希望当ComboBox2等于NiPd时会弹出一个弹出框,然后ComboBox6值必须落在我设定的范围内。
如果它从范围中掉出,它将显示弹出消息
除此之外,我的代码还会在值超过3.2时检查TextBox8值,它也会显示弹出消息。
但我编译了所有代码,当涉及到textbox8小于3.2时,当点击commandbutton1时,它无法将数据存储在excel表中。
除此之外,我还发现如果我选择重新键入TextBox8中的值,它将自动存储我的数据,这是我不希望它发生的。 我希望,它只会存储我重新输入的数据。 我坚持这一点,我完全不知道我的代码中出了什么问题。
我的代码如下:
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
答案 0 :(得分:1)
你应该避免编写像If msg = 7 Then Me.ComboBox6.SetFocus: Exit Sub
这样的代码,因为很难看清楚发生了什么。而是分开代码行:
If msg = 7 Then
Me.ComboBox6.SetFocus
Exit Sub
End If
您还应该始终缩进If ... End If块中的代码,因为这样可以更容易地查看代码的分组方式。
如果您按照以下方式重新组织代码,则可以更轻松地查看分组。您还可以使用其他过程来保持大量代码分离。我添加了UpdateTheSheet
proc。
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
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
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
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
UpdateTheSheet
End If
End If
End With
End Sub
Private Sub UpdateTheSheet()
' Writes the values from user input to the worksheet
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 Sub