Насколько я знаю, VBA Collection реализован в виде связанного списка (используется целочисленными индексами и For Each ... Next) и хеш-таблицы (используется ключами). И, как сказал Ворон, у вас не может быть нескольких предметов с одним и тем же ключом.
Отредактировано:
@ MarkJ: Я должен был привести цитату:
Хардкор Visual Basic 2-е изд. Брюс Маккинни, опубликовано в Microsoft Press 1997 ISBN 1-57231-422-2
Котировки:
Страница 191 - Класс коллекции
"Проще говоря, класс Collection является усовершенствованной версией класса Cist для C ++ [...]. Фактически, если вы улучшите CList, чтобы он представлял собой двусвязный список и дал ему еще несколько функций ( и, возможно, используйте хеш-таблицу для поиска строковых ключей), у вас будет класс коллекции, очень похожий на класс, предоставляемый в Visual Basic. "
Страница 197 - Производительность
"На самом деле разработчики Visual Basic сказали мне, что коллекции - это двусвязные списки (с дополнительными функциями для поддержки индексирования)."
Теперь Маккинни был скорее журналистом, чем программистом, а не разработчиком. Тем не менее, он работал на Microsoft и имеет контакты в командах VB и VBA. Его объяснение работает для меня.
Кстати, причина двусвязного списка состоит в том, чтобы сделать его эффективным для вставки элементов как в начале, так и в конце коллекции.