如何用将VBA将单元格中的16进制转换为10进制?
答案:2 悬赏:20 手机版
解决时间 2021-01-24 13:19
- 提问者网友:兔牙战士
- 2021-01-24 04:24
如何用将VBA将单元格中的16进制转换为10进制?
最佳答案
- 五星知识达人网友:撞了怀
- 2021-01-24 05:32
Sub 十六进制转换十进制()
On Error Resume Next
Dim i As Integer
For i = 1 To [a65535].End(3).Row()
Cells(i, 1) = Application.WorksheetFunction.Hex2Dec(Cells(i, 1))
Next
End Sub
刚学VBA。不怎么会。对于像0X0这种不是十六进制的没进行处理(不会加个判断是否为16进制,见怪~~!)。只是把16进制的转换成了10进制。代码放在模块。
Sub 十六进制转换十进制()
On Error Resume Next
Dim i As Integer
For i = 1 To [a65535].End(3).Row()
If Len(Cells(i, 1)) <> 0 And Not (Cells(i, 1) Like "*[!0-9A-Fa-f]*") Then
Cells(i, 1) = Application.WorksheetFunction.Hex2Dec(Cells(i, 1))
Else
Cells(i, 1).Clear
End If
Next
End Sub
现在加入了判断,不是16进制的做清空相应单元格处理。
On Error Resume Next
Dim i As Integer
For i = 1 To [a65535].End(3).Row()
Cells(i, 1) = Application.WorksheetFunction.Hex2Dec(Cells(i, 1))
Next
End Sub
刚学VBA。不怎么会。对于像0X0这种不是十六进制的没进行处理(不会加个判断是否为16进制,见怪~~!)。只是把16进制的转换成了10进制。代码放在模块。
Sub 十六进制转换十进制()
On Error Resume Next
Dim i As Integer
For i = 1 To [a65535].End(3).Row()
If Len(Cells(i, 1)) <> 0 And Not (Cells(i, 1) Like "*[!0-9A-Fa-f]*") Then
Cells(i, 1) = Application.WorksheetFunction.Hex2Dec(Cells(i, 1))
Else
Cells(i, 1).Clear
End If
Next
End Sub
现在加入了判断,不是16进制的做清空相应单元格处理。
全部回答
- 1楼网友:刀戟声无边
- 2021-01-24 06:09
Public Function HOD(sH As String)
On Error GoTo Err_Zone
Dim iCount As Integer, Dec As Single, e As Integer
Dim sHH As String
iCount = Len(sH)
Dec = 0
e = 0
For k = iCount To 1 Step -1
iD = HODS(Mid(sH, k, 1))
If iD = 16 Then HOD = "#VALUE!": Exit Function
iD = iD * Application.WorksheetFunction.Power(16, e)
HOD = iD + HOD
e = e + 1
Next
Exit Function
Err_Zone:
MsgBox "数据无效!"
End Function
自定义函数追问
这一列单元格在wb文件的F列,程序中a是最大行数。我这样把程序嵌套进去,总提示expected end sub
追答! 天啊 还带你这么玩的啊
这是单独的一个子程序, 你分开放 在你的程序里面调用就可以了啊
调用不会吗
CELLS(i,1)=hod(cells(i,1))追问可是我的最终目的是一键调用,将目标文件调入,目标文件中的16进制一列自动转换为10进制,然后复制到当前工作表的某一列。由于调入文件较多,所以调用的程序尽可能嵌套在一起。不知能否有别的方法。不过还是非常感谢你的追答把我的程序 放在你的 程序的后面 END SUB 之后
在 SH=MId(...........) 之后
加一个调用函数转换 16进制
wb.sheets(1).cells(j,6)= hod(sh)
另外用系统自带的转换函数也是可以的
wb.sheets(1).cells(j,6)= Application.WorksheetFunction.Hex2Dec(sh)
On Error GoTo Err_Zone
Dim iCount As Integer, Dec As Single, e As Integer
Dim sHH As String
iCount = Len(sH)
Dec = 0
e = 0
For k = iCount To 1 Step -1
iD = HODS(Mid(sH, k, 1))
If iD = 16 Then HOD = "#VALUE!": Exit Function
iD = iD * Application.WorksheetFunction.Power(16, e)
HOD = iD + HOD
e = e + 1
Next
Exit Function
Err_Zone:
MsgBox "数据无效!"
End Function
自定义函数追问
这一列单元格在wb文件的F列,程序中a是最大行数。我这样把程序嵌套进去,总提示expected end sub
追答! 天啊 还带你这么玩的啊
这是单独的一个子程序, 你分开放 在你的程序里面调用就可以了啊
调用不会吗
CELLS(i,1)=hod(cells(i,1))追问可是我的最终目的是一键调用,将目标文件调入,目标文件中的16进制一列自动转换为10进制,然后复制到当前工作表的某一列。由于调入文件较多,所以调用的程序尽可能嵌套在一起。不知能否有别的方法。不过还是非常感谢你的追答把我的程序 放在你的 程序的后面 END SUB 之后
在 SH=MId(...........) 之后
加一个调用函数转换 16进制
wb.sheets(1).cells(j,6)= hod(sh)
另外用系统自带的转换函数也是可以的
wb.sheets(1).cells(j,6)= Application.WorksheetFunction.Hex2Dec(sh)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
正方形一边上任一点到这个正方形两条对角线的 |
阴历怎么看 ? |