You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

StrConv函数vbUnicode参数异常:无法将十进制72转回字符H

VBA StrConv字符与十进制值转换问题修复

你尝试用StrConv实现字符"H"和十进制72的互转,正向转换成功但反向得到乱码,原代码如下:

Public Sub Testing()
    Dim Text As String, Back As String, Deci() As Byte
    Text = "H"
    Deci = StrConv(Text, vbFromUnicode)
    Debug.Print Deci(0) ' 输出72,正常
    Back = StrConv(Deci(0), vbUnicode) ' 此处出错,返回乱码
    Debug.Print Back
End Sub

错误原因

StrConv使用vbUnicode参数时,要求输入必须是字节数组,但你传入的是单个Byte类型值(Deci(0)),函数无法正确解析单个字节为Unicode编码,因此返回乱码。正向转换vbFromUnicode返回的是字节数组,反向转换必须保持输入类型匹配。

修正方案

将单个字节值包装成字节数组后再传入StrConv,修正后的代码:

Public Sub TestingFixed()
    Dim Text As String, Back As String, Deci() As Byte
    Dim singleByte(0) As Byte ' 定义单个元素的字节数组
    
    Text = "H"
    Deci = StrConv(Text, vbFromUnicode)
    Debug.Print Deci(0) ' 输出72
    
    singleByte(0) = Deci(0) ' 将单个字节存入数组
    Back = StrConv(singleByte, vbUnicode) ' 传入字节数组转换
    Debug.Print Back ' 输出"H",正常
End Sub

也可以用更简洁的数组字面量写法:

Back = StrConv(Array(Deci(0)), vbUnicode)

内容的提问来源于stack exchange,提问作者kyarudata

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 21:30:41