0

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

基本上我试图用字典的键值填充一个列表框,然后再向列表框添加一个值。这导致值不仅被添加到列表框中,而且作为键被添加到字典中。我试图将 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
4

1 回答 1

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
于 2013-05-13T12:39:54.643 回答