我有一个简单的Excel / VBA问题:
我想要创建的是一个(单选)ListBox,我想在不同的工作表上显示我拥有的Data的唯一值。
到目前为止,我有一个像这样的ListBox:
我想要显示的数据的命名选择:
我使用了这样的公式,并将其用作ListBox的输入。
公式:= BEREICH.VERSCHIEBEN(TopicData!$ C $ 1; 1; 0; ANZAHL2(TopicData!$ C:$ C)-1; 1)
现在我的问题是:如何让ListBox只显示唯一值?我熟悉vba,所以包含这个的解决方案将完全没问题。事实上,我已经尝试删除vba中的重复条目,只要ListBox发生更改,但由于某种原因,似乎没有任何工作。
这是我的vba脚本,我试图解决这个问题:
unfortunatley我总是得到一个"错误400"当我试图在ListBox上调用 RemoveItem 时。
' ...
' filter listbox content so only unique values remain
Dim i As Integer
' find duplicates
Dim inList As New Collection
Dim indexesToRemove As New Collection
For i = availableTopicsListBox.ListCount - 1 To 1 Step -1
If CollectionContains(inList, availableTopicsListBox.List(i)) Then
' if it is already in the list, remove it
indexesToRemove.Add i
Else
inList.Add availableTopicsListBox.List(i)
End If
Next i
' remove duplicates
Dim j As Integer
For j = indexesToRemove.count To 1 Step -1
availableTopicsListBox.RemoveItem (indexesToRemove(j))
Next j
'...
答案 0 :(得分:2)
下面的代码将使用IndexedHashMap< K, T > mCurrent = new IndexedHashMap< K, T >();
IndexedHashMap< K, T > mConstantCurrent = Collections.unmodifiableMap(mCurrent);'
仅存储C列中的唯一值(在&#34; TopicData&#34;工作表中),然后填充Dictionary
列表框中仅包含唯一值availableTopicsListBox
。
<强>代码强>
Dictionary