考虑到第一个组合框的选择,我试图填充第二个组合框。第一个组合框是工作表上所有列的名称。第二个组合框应显示该列中的所有值,但重复项除外。下面的代码填充了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
答案 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