在VBA中将十六进制单元格值转换为二进制

时间:2017-10-23 17:08:12

标签: excel vba excel-vba binary hex

我正在尝试将一列十六进制值转换为二进制值,然后将二进制值写入二进制文件。但是,我在将十六进制值转换为二进制值时遇到问题...

我找到了这个帖子:Convert hex value string to Binary string

我一直在尝试按照答案建议并将每个十六进制字符转换为二进制,然后将结果附加到表示完整二进制数的字符串。但是,我在尝试转换我的十六进制字符串字符时遇到错误......这是我目前正在尝试做的事情:

Dim hexString As String
Dim binaryString As String
hexString = ""
binaryString = ""
Dim rangeOfCells As Range
Set rangeOfCells = Range ("C5: C100")
Dim hexCell As Range

For Each hexCell In rangeOfCells.Cells
    If Not isEmpty(hexCell.value) Then
        hexString = hexCell.Value
        Dim counter As Integer
        For counter = 1 to Len(hexString)
            binaryString = binaryString & Convert.ToString(Convert.ToInt32(Mid(hexString, counter, 1), 16), 2)
        Next
    End If
Next

我一直在将hexString字符转换为二进制并将值附加到binaryString的行上收到此错误:

  

运行时错误' 424':需要对象

我尝试简化代码行,并在尝试将hexString转换为Int(即:Convert.ToInt32(hexString))时继续获取错误事件。

非常感谢您对此问题的任何帮助。谢谢!

2 个答案:

答案 0 :(得分:2)

您收到“对象必需”运行时错误,因为未指定Option Explicit

使用Option Explicit,您会遇到编译时错误,告诉您Convert未在任何地方声明。

原因是,它是.NET框架中的静态类,在System命名空间中:它与VBA没有任何关系。

如果要转换的值相对较小,那么您可以使用HEX2BIN工作表函数:

Debug.Print Application.WorksheetFunction.Hex2Bin(myHexValue)

如果函数抛出错误,那么该值太大,您需要实现自己的。该站点有许多易于使用的实现。

答案 1 :(得分:0)

使用hex2bin或this post

中提到的其他一些功能