Ms access 对象错误:此键已与此集合的元素关联

Ms access 对象错误:此键已与此集合的元素关联,ms-access,object,vb6,vba,Ms Access,Object,Vb6,Vba,说明: 我已经找到了这个问题的一些答案,但它们不符合我的情况。 我试图在VBA中编写一个十六进制到二进制转换的解决方案,但是我在标题中提到了一个错误。但我在此集合中找不到与此元素关联的任何其他键 我的代码: Public Function HEX2BIN(strHex As String) As String Dim oHexValues As Object Dim valueBin As String Dim l_strHex As Integer Set oH

说明: 我已经找到了这个问题的一些答案,但它们不符合我的情况。 我试图在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"

这里有人能帮我吗?

你是不是想添加一个
字符串
“a”
,而不是一个名为
a
的变量?用引号将字母括起来,如


oHexValues.Add“A”,“1010”

您的意思是添加一个
字符串
“A”
而不是一个名为
A
的变量吗?用引号将字母括起来,如


oHexValues.Add“A”,“1010”

那就行了!愚蠢的错误。在我的例子中,如果我加上“A”,if语句将不会识别同一个字母。例如
oHexValues.Exists(A)!=oHexValues.Exists(“A”)
,但我将把
包装在我的charHex周围。再次感谢!看起来您没有使用
选项Explicit
。如果是,那么编译器会告诉您没有名为
A
B
。。。你会更快地发现问题的。这很有效!愚蠢的错误。在我的例子中,如果我加上“A”,if语句将不会识别同一个字母。例如
oHexValues.Exists(A)!=oHexValues.Exists(“A”)
,但我将把
包装在我的charHex周围。再次感谢!看起来您没有使用
选项Explicit
。如果是,那么编译器会告诉您没有名为
A
B
。。。你会更快地发现问题,它消除了错误。但是现在它说,
oHexValues.Exists(“4”)
是假的。这不可能是真的,因为我在字典中添加了“4”。你添加了
“4”
还是
4
oHexValues.add“4”,“0100”
我想做的是,当我在charHex中得到“4”时,我想用它的二进制匹配替换它,这是我的对象->
“0100”中的一对
“4”
Oh gosh..是另一种方式吗??对象。添加值,KOK?OK,我认为你原来的问题现在应该解决了,所以也许考虑把这个标记为已解决并且问一个新的问题,如果你有一个新的问题。它消除了错误。但是现在它说,
oHexValues.Exists(“4”)
是假的。这不可能是真的,因为我在字典中添加了“4”。你添加了
“4”
还是
4
oHexValues.add“4”,“0100”
我想做的是,当我在charHex中得到“4”时,我想用它的二进制匹配替换它,这是我的对象->
“0100”中的一对
“4”
Oh gosh..是另一种方式吗??对象。添加值,KOK?OK,我认为你原来的问题现在应该解决了,所以也许考虑把这个标记为解决,并问一个新的问题,如果你有一个新的问题。