У меня, кажется, есть серьезная проблема с целостностью данных при использовании словарей в Excel VBA, которые я широко использую в своем коде.У меня есть подпрограмма, в которой я использую словарь для получения наилучших результатов от подпрограммы оптимизации.После этого я обновляю существующую таблицу данных, используя результаты расчетов, где нулевое значение приведет к ошибкам.Эта процедура широко использовалась в прошлом без ошибок.Поэтому я был удивлен, когда начали появляться ошибки.Я отследил ошибку до того, что данные словаря были повреждены вне фактического кода.
Словарь с ошибкой загружается другим словарем, который постоянно ищет обновления и сохраняет только те значения, которые лучше, чемпредыдущие, таким образом, оптимизация.Как только эти значения были получены, словарь (DataItems), который вызывает ошибку, загружает новые значения в таблицу данных переменной за раз.Вот код, который я использовал, чтобы перехватить ошибку:
If KeyCount <> DataItems.Count Then: Stop
NewValue = DataItems(NewData)
If KeyCount <> DataItems.Count Then: Stop
Я записал количество элементов в DataItems перед чтением данных в переменную NewValue.До чтения данных словарь имел счетчик 1, но после считывания данных счетчик становился равным 2. Исходный ключ стал ключом новой записи со значением элемента ноль, а исходный элемент получил новый ключ, которыйПохоже, что это значение в исходных объемных данных, которые сканируются.Похоже, что это происходит почти всегда только с одной записью в словаре DataItems.
Я могу использовать ту же процедуру с другими вызывающими приложениями без каких-либо проблем, поэтому проблема, похоже, связана с вызывающим приложением, которое несмысл, так как используемые словари зародились в подпрограмме, где возникает ошибка.Я пытался устранить потенциальные проблемы с синхронизацией, шагая по коду и другим действиям по отладке, но я остаюсь крайне озадаченным.Это действительно заставляет меня усомниться в потенциальной целостности данных при использовании словарей в Excel для критически важных данных приложения.Любые идеи будут оценены.