Scripting.Dictionary键列表框VBA Excel

问题描述:

我一直在Excel中使用VBA,最近开始使用Scripting.Dictionary对象。直到今天,我还没遇到任何重大问题。Scripting.Dictionary键列表框VBA Excel

基本上我试图填充一个字典的键值列表框,然后再向列表框添加一个值。这会导致该值不仅被添加到列表框中,而且还被作为关键字添加到字典中。我试图将dict.keys()数组中的值复制到一个完全独立的数组中,但仍然存在相同的问题。我认为这是一个byref问题,但尚未找出解决方案。如果任何人有任何想法,真棒。

Private Sub Setup_settingLst() 
'Set Settings listbox items 
    'On Error GoTo ErrorExit 
    Dim list_ary() As Variant 
    Dim tmp As Variant 
    Dim i As Integer 

    settingLst.Clear 
    settingLst.Value = "-Select Setting-" 
    i = 0 
    tmp = tmp_dict.Keys() 
    If tmp_dict.Count > 1 Then 
     ReDim list_ary(0 To tmp_dict.Count) 
     For i = 0 To UBound(tmp) 
      list_ary(i) = tmp(i) 
     Next i 
     list_ary(tmp_dict.Count) = "Back" 
    Else 
     ReDim list_ary(0 To tmp_dict.Count - 1) 
     For i = 0 To UBound(tmp) 
      list_ary(i) = tmp(i) 
     Next i 
    End If 
    settingLst.List = list_ary 
    Erase list_ary 
    Exit Sub 
ErrorExit: 
End Sub 
+0

试图重新您的问题,但代码似乎对我的工作确定。请发布其余的代码,包括如何声明和填充'tmp_Dict',以及如何调用'Setup_settingLst',因为这可能会影响问题。 – 2013-05-13 05:54:03

这似乎是工作

Private Sub UserForm_Click() 

    Dim dcValues As Scripting.Dictionary 

    Me.ListBox1.Clear 
    Set dcValues = FillDictionary 

    Me.ListBox1.List = dcValues.Keys 
    Me.ListBox1.AddItem "Back" 

End Sub