VBA大十六进制到整数

1 excel vba excel-vba

我正在尝试将十六进制的大整数转换为十进制并VBA保持返回不正确的值.

VBA,我期待的时候,字符串"&H0A1000043"返回.我已经尝试过,并且有功能,它们都会返回错误的负值.-15938354532701131843CDblCLngVal

Excel HEX2DEC确实返回正确的值.我认为这是VBA函数中的错误我错了吗?

Mik*_*ann 6

这里的实际核心问题是VBA Long数据类型的有限长度以及VBA数值类型(几乎)全部签名的事实.因此,当您尝试类似于CLng("&H0A1000043")尝试将该数字解释为带符号的32位整数时.在这种情况下,-1593835453是正确的值.您可以检查像这样的十六进制转换器(确保将"二进制类型"设置为带符号的32位.

为了正确地完成此转换,您必须使用更大的数字类型,如LongLong(仅在64位Office中可用).例如CLngLng("&H0A1000043^")

Hex2Dec在这些失败时成功的原因是因为Hex2Dec可能直接转换为字符串,而不必经历数字的中间内部表示,这是它被解释为被签名的地方.