AutoCAD VBA使用Val函数读取CSV时小数点变逗号问题求助
解决方法
问题根源
Val() 函数本身不受区域设置影响,始终识别点号为小数点,返回标准双精度数值。你看到的逗号是 MsgBox 输出时调用系统区域格式转换为字符串的呈现效果,h_long 变量内部存储的数值本身是正确的,直接赋值给 textStyle.height 可正常生效。
如果实际测试赋值确实报错,可按以下方案修改代码:
代码修改方案
去掉多余的 CDbl() 嵌套,Val() 本身返回的就是双精度数值,不需要二次转换,也可以主动替换字符串中的小数点分隔符匹配系统设置,彻底规避转换异常。
把 add_textstyle 子程序里的高度赋值行替换为以下任意一种即可:
' 方案1:直接使用Val()返回值 h_long = Val(vlineItems(3)) ' 方案2:强制适配系统小数点分隔符,兼容性更强 Dim decSep As String decSep = Application.International(acDecimalSeparator) h_long = CDbl(Replace(vlineItems(3), ".", decSep))
额外优化提示
当前CSV读取逻辑未处理字段内带逗号的情况(例如示例CSV中带引号的字段如果包含逗号会被Split函数误拆分),如果后续CSV内容复杂度提升,可改用正则匹配或者专用CSV解析逻辑处理,避免拆分错误。
内容的提问来源于stack exchange,提问作者Patrick Legault
相关产品推荐
相关产品推荐

