Can a dictionary object have multiple Items under same key?

后端 未结 4 568
不思量自难忘°
不思量自难忘° 2021-01-19 01:49

I a looking for an workaround related to dictionary objects items

Dim a, d \'Create some variables

 Set d = CreateObject(\"Scripting.Dictionary\")

 d.Add \         


        
4条回答
  •  慢半拍i
    慢半拍i (楼主)
    2021-01-19 01:53

    EDIT: Makes variable name more OPfriendly

    EDIT: Include a Scripting.Dictionary Reference for OP's reading

    Sub t()
        Dim d
        Dim a
        a = Array("Athens", "India", "Paris")
        Set d = CreateObject("Scripting.Dictionary")
        d.Add "a", a
        MsgBox Join(d.Item("a"), ",")
    End Sub
    

    EDIT: to read values as in OP's question into dictionary and retrieve the values

    Sub t()
        Dim d As Object
        Dim values
        Dim height As Long
        Dim item
        Dim width As Long
        Dim i As Long, j As Long
        Dim MANGERID
        Dim EMPIDs
        Dim EMPID
        With ActiveSheet
            height = .Cells(.Rows.Count, 1).End(xlUp).Row
            If height < 2 Then
                Exit Sub
            End If
            Set d = CreateObject("Scripting.Dictionary")
            For i = 2 To height
                width = .Cells(i, .Columns.Count).End(xlToLeft).Column
                if width > 1 then  'make sure have EMPID
                    ReDim values(1 To width - 1)
                    Key = .Cells(i, 1).Value
                    For j = 2 To width
                        values(j - 1) = .Cells(i, j).Value
                    Next j
                    d.Add Key, values
                end if
            Next i
    
            'displaying back the items in the dictionary
            For Each MANGERID In d.keys
                'value array
                EMPIDs = d.item(MANGERID)
                If TypeName(EMPIDs) = "Variant()" Then
                    For Each EMPID In EMPIDs
                        Debug.Print MANGERID & ":" & EMPID
                    Next EMPID
                End If
            Next MANGERID
    
            Set d = Nothing
        End With
    End Sub
    

提交回复
热议问题