【问题标题】:Scripting.Dictionary keys to Listbox VBA ExcelListbox VBA Excel 的 Scripting.Dictionary 键
【发布时间】:2013-05-13 05:04:44
【问题描述】:

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

【问题讨论】:

  • 尝试重新创建您的问题,但代码对我来说似乎可以正常工作。请发布您的其余代码,包括如何声明和填充tmp_Dict,以及如何调用Setup_settingLst,因为这可能会影响问题。

标签: vba excel listbox scripting.dictionary


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多