Excel VBA根据更改的组合框值显示结果
我的用户表单如下所示: 我没有什么标准可以满足。 1.不同的客户会有不同的工艺和规格 2.如果ID#(textbox1)为空,则流程和规范也将更改。 3.不同的客户将使用不同的G-chip来执行他们的进度 我的代码如下:Excel VBA根据更改的组合框值显示结果,excel,vba,Excel,Vba,我的用户表单如下所示: 我没有什么标准可以满足。 1.不同的客户会有不同的工艺和规格 2.如果ID#(textbox1)为空,则流程和规范也将更改。 3.不同的客户将使用不同的G-chip来执行他们的进度 我的代码如下: Private Sub Userform_initialize()ComboBox1.List = Array("Apple", "Banana", "Watermelon") End Sub Private Sub TextBox1_Change() Call Cu
Private Sub Userform_initialize()ComboBox1.List = Array("Apple", "Banana",
"Watermelon")
End Sub
Private Sub TextBox1_Change()
Call CuAl
If TextBox1.Value = "N/A" Then
Call CustXPTArray
Else
Call CustWithPTAluArray
End If
End Sub
Sub CustWithPTAlu()
Select Case ComboBox1
Case "Apple"
ComboBox2.List = Array("Ni", "NiNi")
Case "Banana"
ComboBox2.List = Array("Au", "AuAu")
Case "Watermelon"
ComboBox2.List = Array("Pd", "PdPd")
End Select
End Sub
Sub CustWithPTAluArray()
Call CustWithPTAlu
If ComboBox1.Text = "Apple" Then
TextBox2.Value = IIf(ComboBox2.Value = "Ni", "10S", "20S")
Else
If ComboBox1.Text = "Banana" Then
TextBox2.Value = IIf(ComboBox2.Value = "Au", "30S", "40S")
Else
TextBox2.Value = IIf(ComboBox2.Value = "Pd", "50S", "60S")
End If
End If
End Sub
Sub CuAl()
Select Case ComboBox1
Case "Apple"
ComboBox3.List = Array("Cu", "Al")
Case "Banana"
ComboBox3.List = Array("Cu")
Case "Watermelon"
ComboBox3.List = Array("Al")
End Select
End Sub
Sub CustXPT()
ComboBox2.List = Array("Ni", "NiAu", "NiPd", "NiPdAu")
End Sub
Sub CustXPTArray()
Call CustXPT
Select Case ComboBox2
Case "Ni"
TextBox2.Value = "70S"
Case "NiAu"
TextBox2.Value = "80S"
Case "NiPd"
TextBox2.Value = "90S"
Case "NiPdAu"
TextBox2.Value = "100S"
End Select
End Sub
当我尝试运行代码时,规范不会改变。它将保持相同的数字
我不知道,当我一个接一个地设置所有函数时,怎么会发生这种情况
Customer: ComboBox1
ID#: TextBox1
G-chip:ComboBox3
Plating Type:ComboBox2
Lower Range:TextBox2
我在这里所做的就是将表单计算的逻辑放在“calc_form”中,然后在任何一个字段发生更改时调用它,无论是在textbox1/combobox2/combobox3中。当条件发生变化时,您可能需要考虑清除组合框中的值,主要是为了强制用户重新检查
Private Sub ComboBox2_Change()
calc_form
End Sub
Private Sub ComboBox3_Change()
calc_form
End Sub
Private Sub TextBox1_Change()
calc_form
End Sub
Sub calc_form()
Call CuAl
If TextBox1.Value = "N/A" Then
Call CustXPTArray
Else
Call CustWithPTAluArray
End If
End Sub
Private Sub Userform_initialize()
ComboBox1.List = Array("Apple", "Banana", "Watermelon")
End Sub
Sub CustWithPTAlu()
Select Case ComboBox1
Case "Apple"
ComboBox2.List = Array("Ni", "NiNi")
Case "Banana"
ComboBox2.List = Array("Au", "AuAu")
Case "Watermelon"
ComboBox2.List = Array("Pd", "PdPd")
End Select
End Sub
Sub CustWithPTAluArray()
Call CustWithPTAlu
If ComboBox1.Text = "Apple" Then
TextBox2.Value = IIf(ComboBox2.Value = "Ni", "10S", "20S")
Else
If ComboBox1.Text = "Banana" Then
TextBox2.Value = IIf(ComboBox2.Value = "Au", "30S", "40S")
Else
TextBox2.Value = IIf(ComboBox2.Value = "Pd", "50S", "60S")
End If
End If
End Sub
Sub CuAl()
Select Case ComboBox1
Case "Apple"
ComboBox3.List = Array("Cu", "Al")
Case "Banana"
ComboBox3.List = Array("Cu")
Case "Watermelon"
ComboBox3.List = Array("Al")
End Select
End Sub
Sub CustXPT()
ComboBox2.List = Array("Ni", "NiAu", "NiPd", "NiPdAu")
End Sub
Sub CustXPTArray()
Call CustXPT
Select Case ComboBox2
Case "Ni"
TextBox2.Value = "70S"
Case "NiAu"
TextBox2.Value = "80S"
Case "NiPd"
TextBox2.Value = "90S"
Case "NiPdAu"
TextBox2.Value = "100S"
End Select
End Sub
有没有可能,我再添加一个函数,以便在字段再次更改时清除内容?实际上,您可以删除其中的大部分函数,并将它们放在更改事件中的正确位置下-上面的操作很有效,因此我现在不必麻烦更改它。无论如何,关于你的问题,我不会(你也不需要)编写一个新函数来清除内容。编写代码以清除TextBox1_Change事件下的其他下拉列表。如果希望组合框事件也清除任何值,则可能需要在组合框事件下放置一些代码