2015-05-29 3 views
0

Я хочу, чтобы в ComboBox2 был установлен флажок, если значение ComboBox2 равно NiPd, тогда значение ComboBox6 должно падать в диапазоне, который я установил.
Если он выпадет из диапазона, он отобразит всплывающее сообщение.
Другие, кроме этого, мой код также проверяет значение TextBox8, когда значение превышает 3,2, оно также отображает сообщение об ошибке.Данные не будут храниться внутри листа excel

Но я скомпилировал весь свой код, когда дело доходит до текстового поля8 меньше 3.2, он не сможет хранить данные внутри листа excel при нажатии кнопки commandbutton1.

Другие, кроме этого, я также узнал, что, если я захочу повторить значение в 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 
+1

Добро пожаловать в [SO] (http://stackoverflow.com/tour). Вы сбросили 94 строки кода. ([См] (http://stackoverflow.com/help/mcve)) – Jeeped

ответ

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 
Смежные вопросы