除了@ 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