Есть ли в VBA структура словаря?

VBA имеет объект коллекции:

    Dim c As Collection
    Set c = New Collection
    c.Add "Data1", "Key1"
    c.Add "Data2", "Key2"
    c.Add "Data3", "Key3"
    'Insert data via key into cell A1
    Range("A1").Value = c.Item("Key2")

Объект data-structure Collection выполняет поиск на основе dictionary ключей с использованием хеша, поэтому dictionary это быстро.


Вы можете использовать data-structures функцию Contains(), чтобы проверить, содержит vba-macros ли конкретная коллекция ключ:

Public Function Contains(col As Collection, key As Variant) As Boolean
    On Error Resume Next
    col(key) ' Just try it. If it fails, Err.Number will be nonzero.
    Contains = (Err.Number = 0)
    Err.Clear
End Function

Редактировать 24 июня 2015 г.: короче vb6 Contains() благодаря @TWiStErRob.

Редактировать 25 сентября 2015 г.: добавлено dict Err.Clear() благодаря @scipilot.

vba

dictionary

data-structures

vb6

2022-10-13T21:52:13+00:00