Я пытаюсь добавить некоторые элементы в объект словаря (идентификатор базы данных и пара значений), чтобы пользователь мог подтвердить свой выбор перед фиксацией. У меня есть следующий раздел кода, который добавляет элемент в словарь. После добавления я перебираю Dictionary.Keys и печатаю каждый ключ/значение в список, чтобы пользователь мог его увидеть. Мой объект словаря является общедоступной переменной в моей форме и устанавливается в событии Form_Load.
Dim PickListID As Integer
If txtPercentOfStream <> "" Then
PickListID = cboCoalTypes
If Not CoalsInStreamDic.Exists(PickListID) Then
CoalsInStreamDic.Add PickListID, txtPercentOfStream
End If
Else
Exit Sub
End If
Странно то, что всякий раз, когда я добавляю новую пару ключ/значение, значение для нового ключа становится значением для всех существующих ключей в дополнение к новому ключу.
Я запускаю этот небольшой блок до и после взаимодействия со словарем
Dim key As Variant
For Each key In CoalsInStreamDic.Keys
Debug.Print key & "::" & CoalsInStreamDic.item(key)
Next key
Debug.Print
т. е. пользователь нажимает кнопку, и первым кажется, что происходит этот вышеприведенный блок, чтобы подтвердить, что старые ключи имеют свои исходные значения, но это не так. Они уже заменены на "новое значение". Последующий запуск блока подтверждает это.
Почему это происходит?