VBA设置数据透视表无货币符号会计格式触发类型不匹配错误
Fix Runtime Error 13 (Type Mismatch) with Accounting Number Format in VBA
我之前也踩过这个坑!你遇到的问题确实出在格式代码的特殊字符处理上,核心原因是VBA字符串中的双引号需要转义——单个双引号会被VBA识别为字符串的结束标记,直接使用原格式代码里的" - "会导致语法解析错误,进而触发运行时错误13。
解决方案:转义格式代码中的双引号
把原格式代码里的单个双引号替换成两个连续的双引号(""),这样VBA就能正确识别格式字符串中的双引号内容了。修正后的代码如下:
.DataBodyRange.NumberFormat = "_(* #,##0.00_);_(* (#,##0.00);_(* "" - ""??_);_(@_)"
更稳妥的小技巧
如果担心手动转义容易出错,可以先在Excel单元格里设置好你想要的会计格式(不带货币符号),然后打开VBA编辑器的立即窗口(按Ctrl+G),输入以下命令并回车:
Debug.Print ActiveCell.NumberFormat
此时立即窗口会输出VBA能直接使用的、已经转义好的格式字符串,你直接复制这个结果到代码里就行,完全不用手动处理特殊字符,省心又准确!
内容的提问来源于stack exchange,提问作者toucansame
相关产品推荐
相关产品推荐

