說明: 我擡頭已經對此問題提供了一些答案,但它們不適合我的情況。 我想寫一個十六進制到二進制轉換在VBA的解決方案,但我在標題中提到一個錯誤。雖然我無法在此集合中找到任何與此元素關聯的其他Key。對象錯誤:此密鑰已與此集合中的某個元素相關聯
我的代碼:
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」添加,IF語句不會識別同一封信。 例如'oHexValues.Exists(A)!= oHexValues.Exists(「A」)' 但是我只是將''「'包裹在我的charHex周圍。再次感謝! – 2014-10-31 10:36:57
看起來你並沒有使用Option Explicit。如果你是,那麼編譯器會告訴你,沒有變量名爲'A','B',...你會更快地發現問題。 – 2014-10-31 10:48:32