У меня проблемы с возвратом значения из коллекции с помощью ключа.
Подпрограмма GetPercentsUpdateCharts создает новую коллекцию и помещает в нее новое значение с ключом {{процентаOpen}} и значением "Тест".
Выводится функция Contains, написанная с помощью Debug.PrintЗначение true, которое доказывает, что ключ существует в коллекции.
Функция Retrieve всегда возвращает «Не найдено».
Где я ошибся?
Private Sub GetPercentsUpdateCharts()
Set colPercentTokens = Nothing
Set colPercentTokens = New Collection
'Calculate Percents and Update Charts
Store colPercentTokens, "{{percentOpen}}", "Test"
Debug.Print Contains(colPercentTokens, "{{percentOpen}}")
Debug.Print Retrieve(colPercentTokens, "{{percentOpen}}")
End Sub
Public Function Contains(col As Collection, key As String) As Boolean
On Error GoTo NotFound
Dim itm As Object
Set itm = col(key)
Contains = True
MyExit:
Exit Function
NotFound:
Contains = False
Resume MyExit
End Function
Public Function Retrieve(col As Collection, key As String) As String
On Error GoTo NotFound
Dim itm As Object
Set itm = col(key)
Retrieve = CStr(itm)
MyExit:
Exit Function
NotFound:
Retrieve = "Not Found"
Resume MyExit
End Function
Public Sub Store(col As Collection, k As String, v As String)
Dim kv As Object
If (Contains(col, k)) Then
Set kv = col(k)
kv.value = v
Else
Set kv = New KeyValue
kv.Init k, v
col.Add kv, k
End If
End Sub