2013-05-13 92 views
0

我一直在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

回答

1

這似乎是工作

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