# Answers for "xl vba Convert HEX string to Unsigned INT"

30

xl vba Convert HEX string to Unsigned INT

``````'VBA function to convert a hexadecimal string into a decimal. Uses
'the Decimal Variant subtype to allow for much larger values than the
'worksheet function HEX2DEC() or CLng("&h" & HexVal) can achieve. It
'returns an UNSIGNED Decimal integer...

Function HexToDec(hexStr\$)
Dim c&, i&, bitVal
Static hexVals&(), b() As Byte

If (Not Not hexVals) = 0 Then
ReDim hexVals(48 To 102)
For i = 48 To 57
hexVals(i) = c
c = c + 1
Next
For i = 65 To 70
hexVals(i) = c
c = c + 1
Next
c = 10
For i = 97 To 102
hexVals(i) = c
c = c + 1
Next
End If

bitVal = CDec(1)
HexToDec = CDec(0)
b = StrConv(hexStr, vbFromUnicode)
For i = UBound(b) To 0 Step -1
HexToDec = HexToDec + hexVals(b(i)) * bitVal
bitVal = bitVal * 16&
Next
End Function

'-------------------------------------------------------------------------------------

MsgBox HexToDec("fffffffffffffffffffffff")	'<--displays: 4951760157141521099596496895

MsgBox TypeName(HexToDec("ABCDEF0123456"))	'<--displays: Decimal

'
'
'``````
Posted by: Guest on March-07-2021