Excel VBA - 填充另一个Combobox选择的Combobox

时间:2015-01-29 13:26:34

标签: excel-vba combobox filter vba excel

考虑到第一个组合框的选择,我试图填充第二个组合框。第一个组合框是工作表上所有列的名称。第二个组合框应显示该列中的所有值,但重复项除外。下面的代码填充了combobox1。考虑到不同的列名,我正在努力解决如何从列中取出数据的问题。谢谢你的帮助。

Dim myArray As Variant

lastcol = Sheets(4).Range("A1").End(xlToRight).Column
With Sheets(4)
Set SourceRng = .Range(.Cells(1, 1), .Cells(1, lastcol))
End With
myArray = WorksheetFunction.Transpose(SourceRng)

With Me.ComboBox1
.List = myArray
End With

1 个答案:

答案 0 :(得分:1)

您可以尝试获取listindex的{​​{1}}。请记住,ListIndex是基于0的,而Excel行和列不是:

combobox1

要摆脱重复的值和垃圾:Private Sub ComboBox1_AfterUpdate() Dim selectedCol as Variant selectedCol = Me.ComboBox1.ListIndex + 1 Set SourceRng = ws.Range(Cells(2, selectedCol), Cells(4, selectedCol)) Me.ComboBox2.List = WorksheetFunction.Transpose(SourceRng) End Sub

以下是删除重复项的解决方法。使用Range类的RemoveDuplicates函数将删除您的行,我假设您不希望这样:

Set SourceRng = ws.Range(Cells(varRow, Me.ComboBox1.ListIndex + 1), Cells(varRow2, Me.ComboBox1.ListIndex + 1)).RemoveDuplicates Columns:= selectedCol, Header:=xlNo