我有3个组合框,即组合框x1、组合框x2和组合框x3,每个组合框都有相同的项目。项目包括"aa"、"bb"、"cc"one_answers"dd"。
此外,这些组合框是用户形式的。
因此,我在USERFORM中有3个组合框,如果我在组合框1中选择"aa",如何使"aa"不出现在其他2个组合框中,使其不会再次重新选择。
这就像,如果我在combobox1中选择"aa",在combobox 2中选择"bb"combobox3必须是"cc"one_answers"dd"。
但我不知道怎么做。你能帮我查密码吗?非常感谢。
Ps。我正在excel 中使用Microsoft VBA
Pps。我不是职业选手。
以下是如何实现所需目标的基本示例您需要更改代码才能在自己的项目中工作。
这是假设用户每次都会按照特定的顺序从组合框中进行选择。例如,这将适用于首先从ComboBox1
中选择一个值,然后为ComboBox2
提供列表,但不适用于从ComboBox1
列表中删除ComboBox2
的选择。它可以修改为这样做,所以如果需要的话,可以随意这样做。
您可以将列表写入工作表中所需的任何位置-通常,在隐藏列或隐藏辅助工作表中这样做很有用。此示例在工作簿的Sheet2
上的单元格P6
到P12
中具有值"AA"到"GG"。
代码在到的范围内循环,以1乘1将项目添加到ComboBox
,如果值为=上一个ComboBox
选择,则跳过它,否则将值添加到ComboBox
。
Private Sub UserForm_Initialize()
'This Sub populates the first combobox with all values in the list
Dim TargetCell As Range
Dim ListRange As Range
With ThisWorkbook.Sheets("Sheet2")
Set ListRange = .Range("P6:P12")
For Each TargetCell In ListRange
Me.ComboBox1.AddItem TargetCell.Value
Next TargetCell
End With
End Sub
'__________________________________________________________________________________
Private Sub ComboBox1_Change()
'This Sub is similar to above, but has an If statement to check if the value on the sheet_
'is the same as the selected value in the previous combobox1. If it is it's ignored_
'otherwise Combobox2 has the value added.
Dim TargetCell As Range
Dim ListRange As Range
With ThisWorkbook.Sheets("Sheet2")
Set ListRange = .Range("P6:P12")
For Each TargetCell In ListRange
If TargetCell.Value = Me.ComboBox1.Value Then
'Skip
Else
Me.ComboBox2.AddItem TargetCell.Value
End If
Next TargetCell
End With
End Sub