Объяснение: Я уже нашел ответы на этот вопрос, но они не подходят для моего дела. Я пытаюсь написать решение для Hex To Binary conversion в VBA, но я получаю ошибку, упомянутую в названии. Хотя я не могу найти какой-либо другой ключ, связанный с этим элементом в этой коллекции.Ошибка объекта: Этот ключ уже связан с элементом этой коллекции
Мой КОД:
Public Function HEX2BIN(strHex As String) As String
Dim oHexValues As Object
Dim valueBin As String
Dim l_strHex As Integer
Set oHexValues = CreateObject("Scripting.Dictionary")
oHexValues.Add 1, "0001"
oHexValues.Add 2, "0010"
oHexValues.Add 3, "0011"
oHexValues.Add 4, "0100"
oHexValues.Add 5, "1010"
oHexValues.Add 6, "0110"
oHexValues.Add 7, "0111"
oHexValues.Add 8, "1000"
oHexValues.Add 9, "1001"
oHexValues.Add A, "1010"
oHexValues.Add B, "1011"
oHexValues.Add C, "1100"
oHexValues.Add D, "1101"
oHexValues.Add E, "1110"
oHexValues.Add F, "1111"
valueBin = ""
l_strHex = Len(strHex)
For i = 1 To l_strHex
charHex = Mid(strHex, i, 1)
MsgBox "Chars:" & charHex
If oHexValues.Exists(charHex) Then
valueBin = valueBin & oHexValues(charHex)
ElseIf charHex = "0" Then
valueBin = valueBin & "0000"
Else
MsgBox "Invalid value!"
End If
Next i
HEX2BIN = valueBin
End Function
ОШИБКА:Этот ключ уже связан с элементом этой коллекции. И отладчик указывает на запись:
oHexValues.Add B, "1011"
Может ли кто-нибудь помочь мне здесь?
Это работает! Глупая ошибка. В моем случае, если я делаю добавление с помощью «А», утверждение IF не распознает ту же букву. Например, 'oHexValues.Exists (A)! = OHexValues.Exists (" A ")' Но я просто завершу '' '' вокруг моего charHex. Еще раз спасибо! –
Похоже, вы не используете 'Option Explicit'. Если бы вы были, то компилятор сказал бы вам, что не было переменной с именем 'A',' B', ... и вы бы быстрее столкнулись с этой проблемой. –