Excel';13 VBA级联组合框-在组合框2中获取唯一值时遇到问题2
我终于能够让combobox2加载与combobox1中所做选择相对应的值。问题是,我不能在combobox2中只获得唯一的值来填充。它根据combobox1的选择返回所有值,包括重复项。我已将.clear移到代码中的各个点,但这只会将其从加载多个重复值更改为显示1个总值或空白 下面是我修改代码的源代码 (“数据”)是存放我的数据的工作表 (“图表”)是我的组合框所在的工作表 cmbRent=ComboBox1 cmbSub=ComboBox2Excel';13 VBA级联组合框-在组合框2中获取唯一值时遇到问题2,vba,excel,combobox,activex,cascadingdropdown,Vba,Excel,Combobox,Activex,Cascadingdropdown,我终于能够让combobox2加载与combobox1中所做选择相对应的值。问题是,我不能在combobox2中只获得唯一的值来填充。它根据combobox1的选择返回所有值,包括重复项。我已将.clear移到代码中的各个点,但这只会将其从加载多个重复值更改为显示1个总值或空白 下面是我修改代码的源代码 (“数据”)是存放我的数据的工作表 (“图表”)是我的组合框所在的工作表 cmbRent=ComboBox1 cmbSub=ComboBox2 Private Sub cmbRent_
Private Sub cmbRent_Change()
MyVal = Me.cmbRent.Value
'loop thru col B
lr = ThisWorkbook.Sheets("DATA").Cells(Rows.Count, 1).End(xlUp).Row
'clear cmbSub
ThisWorkbook.Sheets("CHART").cmbSub.Clear
'loop thru
For x = 2 To lr
If MyVal = ThisWorkbook.Sheets("DATA").Cells(x, 1) Then
'add to combobox
ThisWorkbook.Sheets("CHART").cmbSub.AddItem ThisWorkbook.Sheets("DATA").Cells(x, 2)
End If
Next x
ThisWorkbook.Sheets("CHART").cmbSub.ListIndex = -1
End Sub
您需要添加一个复选框,查看这些是否已经添加到组合框中。 我还在工作表中使用了变量,以便于代码可读性,并加快键入速度
Dim wsChart As Worksheet
Dim wsData As Worksheet
Dim listOfValues As String 'To store list of values already added
Dim ValueToAdd As String 'To store new value to add
listOfValues = ""
Set wsChart = ThisWorkbook.Sheets("CHART")
Set wsData = ThisWOrkbook.Sheets("DATA")
.....(insert rest of code here)
For x = 2 To lr
If MyVal = wsData.Cells(x, 1) Then
'add to combobox
ValueToAdd = wsData.Cells(x,2) 'Get value from worksheet
If InStr(listOfValues, valueToAdd) = 0 Then
'Check to see if the value has already been added
'If not, add to values added and add the item to the combobox.
listOfValues = listOfValues & ValueToAdd
wsChart.cmbSub.AddItem valueToAdd
End If
End If
Next x
工作得很好!我不得不将wsChart.cmbSub.AddItem更改为Me.cmbSub.AddItem,因为它抛出了一个错误,但这是唯一的问题!!我是否可以通过替换将此应用于cmb3和cmb4?假设对于combobox3,我会将cmb2移动到cmb1所在的位置,并更新列以反映新值所基于的数据?是的。只需更改获取信息的列,然后更改组合框的名称。非常感谢!所有组合都已填写,我现在有一个关于cmb4的新版本。谢谢