2015-12-29 2 views
0

Этот код работал в течение нескольких дней, полностью перекликаясь с помощью словаря. Цикл начал ломаться, и у меня есть дополнительные ключи в словаре, и я понятия не имею, откуда они пришли.VBA Extra key/item pairs in scripting.dictionary

Я создаю scripting.dictionary со следующим:

Dim riskDict As New Scripting.Dictionary 

После чего объект пуст, как видно на часы:

enter image description here

Затем я добавить мой первый пара ключей/позиций:

riskDict.Add "Weight", Array("WP", 0) 

И после запуска этого o пе строка кода, теперь у меня есть это:

enter image description here

Где же эти две дополнительные клавиши (Пункт 2 и 3) происходят из ?! Это проблема, так как в дальнейшем в моем коде я использую:

For Each key In riskDict 
    temp = riskDict(key) 
    ... 
Next key 

И эта петля перерывы, так как он начинает со ссылкой на ключи, которые являются пустыми. Кажется, что это не происходило до сих пор, и код работает нормально в течение нескольких дней. (Я изменил некоторые вещи в другом месте кода, но совершенно не связан с этим.)

Сообщите мне, если я делаю что-то смешное или пропуская что-то очевидное и спасибо!

+0

У вас есть две разные переменные «riskDict» и «riskGroupDict», правильно? Это не ясно, так как вы не разделили весь код. – omegastripes

+0

Ты прав, но я просто схватил неправильный кусок кода. Я исправил свой вопрос, но спасибо за головы! – lukehawk

+0

Не могли бы вы разместить весь цикл цикла «Для каждого». Обратите внимание, что просто ссылка на элемент словаря добавляет новый элемент, если он отсутствует, без вызова метода «Добавить». – omegastripes

ответ

0

Сделайте riskDict частным или очистите свой массив перед его использованием. Трудно сказать, что вы делаете с ним, поскольку отсутствуют важные элементы.

Dim riskDict As New Scripting.Dictionary 
Смежные вопросы