使用VBA插入Excel公式时出现运行时错误1004求助
VBA插入Excel公式报错1004的原因与解决办法
核心问题出在分隔符上:VBA的Range.Formula属性要求公式必须用**英文逗号(,)**作为函数参数分隔符,但你写的公式里用的是分号(;)——这是Excel部分地区版本(比如欧洲区)的界面显示分隔符,VBA不认这个规则,直接赋值就会触发1004错误。
给你两种可行的解决办法:
- 把公式里的分号全部替换成英文逗号,修改后的代码如下:
Range("AB3").Formula = "=MID($AA3,FIND(CHAR(134),SUBSTITUTE($AA3,AB$2,CHAR(134),1))+22,FIND(CHAR(134),SUBSTITUTE($AA3,AC$2,CHAR(134),1))-FIND(CHAR(134),SUBSTITUTE($AA3,AB$2,CHAR(134),1))-25)" - 改用
FormulaLocal属性替代Formula,这个属性会适配Excel当前区域设置的分隔符,直接用你原来的分号公式就行:Range("AB3").FormulaLocal = "=MID($AA3;FIND(CHAR(134);SUBSTITUTE($AA3;AB$2;CHAR(134);1))+22;FIND(CHAR(134);SUBSTITUTE($AA3;AC$2;CHAR(134);1))-FIND(CHAR(134);SUBSTITUTE($AA3;AB$2;CHAR(134);1))-25)"
至于手动添加能生效的原因:手动输入时Excel会自动识别当前区域的分隔符规则,而VBA的Formula属性强制遵循英文语法,两者规则不匹配才出现了这种矛盾情况。
内容的提问来源于stack exchange,提问作者Maximilien Ollier
相关产品推荐
相关产品推荐

