vba инициализирует словарь раннего и позднего связывания - PullRequest
0 голосов
/ 06 июня 2019

Следующий код работает в VBA

 Dim dict_var As Dictionary
 Set dict_var = CreateObject("Scripting.Dictionary")

Чтение нескольких вопросов и ответов в стеке Я много раз сталкивался с решениями, код которых начинается с:

 Dim aDictionary As Dictionary
Set aDictionary = New Dictionary

Эта поздняя версия выдает мне ошибку:

Неправильное использование нового ключевого слова

почему? где тут трюк? Зачем использовать тот или иной метод?

Thks

EDIT: Есть много вопросов, касающихся этой проблемы в стеке, этот был предложен. Тем не менее такой вопрос относится к весьма специфической проблеме словарей словарей. И это не объясняет ни то, что означает раннее и не раннее связывание. Было бы неплохо узнать, в каком конкретном случае работает следующее.

Dim aDictionary As Dictionary

Или, другими словами, когда это действительно необходимо:

Dim aDictionary As scripting.Dictionary

EDIT2: это мои библиотеки: enter image description here

1 Ответ

3 голосов
/ 06 июня 2019

Во-первых, оба ваших кодовых наборов имеют раннюю привязку. Для позднего связывания вы должны объявить переменную как Object.

Во-вторых, что касается конкретной ошибки, я подозреваю, что у вас есть ссылки на две библиотеки, в которых есть класс Dictionary - например, Word и среда выполнения сценариев - и та, которая выше в ссылках list - это один объект экземпляра, поэтому вы не можете использовать New с ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...