除了@ mielk的回答,你还可以使用字典来完成你所追求的。
下面使用'Microsoft Scripting Runtime'参考。请记住在工具 - >参考中启用它。
Option Explicit
Sub populateUF()
Dim dict As Scripting.Dictionary, myItem As Variant
Dim lrow As Long, i As Long
Dim myValues() As Variant
Set dict = New Scripting.Dictionary
lrow = Cells(Rows.Count, 1).End(xlUp).Row
myValues = Range(Cells(2, 1), Cells(lrow, 1))
For i = 1 To UBound(myValues, 1)
If Not dict.Exists("Item" & myValues(i, 1)) Then
dict.Item("Item" & myValues(i, 1)) = myValues(i, 1)
End If
Next i
For Each myItem In dict
UserForm1.ComboBox1.AddItem dict.Item(myItem)
Next myItem
UserForm1.Show
End Sub
我们使用.Exists
method以评估是否从阵列的值已经预先被添加到词典中。新值将添加到字典中,从而只分配数组中的唯一值。然后我们使用for each
语句遍历字典,将值赋给组合框。
要进一步阅读字典,请参见文档here,更详细地说,请参阅here。
你我的朋友是天才。非常感谢你做的这些。它的作用就像一种享受。你惊人的。谢谢:) :) @mielk – GBSingh