使用VBA填充Excel格式的dynamic下拉列表

我有一个Excel表单上的下拉列表,我想填充表中列出的项目“或”,但是我只需要从这个dynamic列表中唯一的条目,然后填充下拉列表。

已经search了很多博客,build议命名范围作为Rowsource属性,但我的列表有重复的项目,是dynamic的。

你可以写这个代码:

Dim s As String, r As Integer, nr As Integer, wr, v Set wr = Range("A1:A10") nr = wr.Rows.Count For r = 1 To nr v = wr(r, 1) If InStr(s, v & ",") = 0 Then s = s & v & "," End If Next s = Left(s, Len(s) - 1) With Range("D1").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=s End With 

这使用数据validation,我假设数据是A1:A10和D1中的combobox。 combobox将只包含A1:A10不同的值

如果你喜欢一个combobox的ActiveX对象,试试这个:

  Dim s As String, r As Integer, nr As Integer, wr, v Set wr = Range("A1:A10") nr = wr.Rows.Count With ComboBox1 .Clear For r = 1 To nr v = wr(r, 1) If InStr(s, v & ",") = 0 Then s = s & v & "," .AddItem (v) End If Next End With