我需要在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",如何将其转换为十六进制以便我可以对其执行十六进制计算?
答案 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 可以算术使用。