在Excel VBA中将字符串转换为十六进制

时间:2014-10-14 14:18:02

标签: excel vba excel-vba

我需要在Excel VBA宏中将字符串转换为十六进制。

我试过了:

Dim val As String
val = "10"
Dim hexVal As Integer
hexVal = Convert.ToInt32(val, 16)

Convert.ToInt32(val, 16)不起作用,我猜是因为它不是VB.NET?

无论如何,我可以使用CInt(val)将字符串转换为整数但是如果我有一个十六进制值的字符串表示,例如" 3366CC",如何将其转换为十六进制以便我可以对其执行十六进制计算?

2 个答案:

答案 0 :(得分:8)

在VBA中,你需要弄清楚&H文字:

value = val("&H" & "10") '// 16
value = val("&H3366CC")  '// 3368652

修改

Function FromHex(hexString As String) As Long
    FromHex = Val("&H" & hexString)
End Function

然后

resultString = hex$(FromHex("3366CC") / FromHex("A"))

或者显然是常数;

resultString = hex$(FromHex("3366CC") / &HA)

答案 1 :(得分:5)

考虑:

Sub dural()
    Dim val As String, hval As String
    val = "10"
    hval = Application.WorksheetFunction.Dec2Hex(val)
    MsgBox hval
End Sub

VBA 代码需要知道或对输入字符串做出假设。上面的代码假定字符串代表十进制值。

如果输入字符串是 Hex,则:

Sub dural2()
    Dim val As String, hval As Long
    val = "10"
    hval = Application.WorksheetFunction.Hex2Dec(val)
    MsgBox hval
End Sub

这里 hval 可以算术使用。