Словарь из двух колонок массива

Возвращает словарь из двух колонок массива
позднее связывание
АртеФакт, gem

Public Function Массив_в_Словарь( _
       a2() As Variant, _
       col_Key_ As Long, _
       col_Item As Long) _
       As Object
 
    ' tested
    ' array  to dictionary, A2_2_Dic
    ' Возвращает словарь из двух колонок массива
    ' позднее связывание
    ' АртеФакт, gem
 
    Dim dic_Temp
    Set dic_Temp = CreateObject("Scripting.Dictionary")
 
    Dim key_ As Variant, _
        item As Variant
 
    Dim y As Long
 
    With dic_Temp
 
        For y = LBound(a2) To UBound(a2)
 
            key_ = a2(y, col_Key_)
            item = a2(y, col_Item)
 
            If .Exists(key_) = False Then
 
                .Add key_, item
 
            End If
        Next
    End With
 
    Set Массив_в_Словарь = dic_Temp
 
End Function
 
'@TestMethod
Public Sub Массив_в_Словарь_TestMethod()
 
    On Error GoTo TestFail
 
    Dim a2() As Variant, _
        col_Key_ As Long, _
        col_Item As Long
 
    a2 = Mock.G_a2_Latin(2, 2)
 
    col_Key_ = LBound(a2, 2)
    col_Item = col_Key_ + 1
 
    Dim varReturn As Object
    Set varReturn = Массив_в_Словарь(a2(), _
                                     col_Key_, _
                                     col_Item)
 
    Dim vKey_ As Variant, _
        vItem As Variant, _
        a2_Keys_() As Variant, _
        a2_Items() As Variant
 
    With varReturn
 
        a2_Keys_ = .Keys
        a2_Items = .items
 
        vKey_ = a2(LBound(a2), col_Key_)
        vItem = .item(vKey_)
 
    End With
 
    If vItem <> _
       a2(LBound(a2), col_Item) Then Err.Raise 567, "Массив_в_Словарь(a2(),col_Key_,Col_Item)"
 
TestExit:
 
    Exit Sub
 
TestFail:
 
    Assert.Fail "Test error: #" & Err.Number & " - " & Err.Description
 
End Sub

 

1 комментарий

Оставить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.