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

VBA设置Excel单元格公式时出现Compile error报错求助

问题原因及解决方案

核心编译错误原因

VBA中字符串内部的双引号必须用**两个连续双引号""**转义,你使用的\"是其他编程语言的转义规则,VBA无法识别,直接导致编译报错。

次要问题及修正

  1. 公式属性选择错误:你要设置的是A1样式的公式(如D2、L2),应使用Formula或FormulaArray属性,而非FormulaR1C1(该属性对应R1C1样式引用,如RC[-27])。
  2. 数组公式处理:你的公式包含数组运算逻辑(通过ROW($1:$8)生成序列配合MID、ISNUMBER做数组判断),需要用FormulaArray属性赋值,才能模拟Excel中按Ctrl+Shift+Enter输入数组公式的效果。

修正后的代码

' 直接赋值,无需选中单元格(更高效)
Range("AE2").FormulaArray = "=IF(OR(D2=""ECHARGEUR2"",D2=""ECHARGEUR3"",D2=""ECHARGEUR1"",D2=""ECHARGERO2"",D2=""ECARD001"",D2=""ECARD002"",D2=""ECARD003""),L2,1*MID(D2,MATCH(TRUE,ISNUMBER(1*MID(D2,ROW($1:$8),1)),0),COUNT(1*MID(D2,ROW($1:$8),1))))"

如果你的Excel版本支持动态数组(无需按Ctrl+Shift+Enter触发数组运算),可以改用Formula属性:

Range("AE2").Formula = "=IF(OR(D2=""ECHARGEUR2"",D2=""ECHARGEUR3"",D2=""ECHARGEUR1"",D2=""ECHARGERO2"",D2=""ECARD001"",D2=""ECARD002"",D2=""ECARD003""),L2,1*MID(D2,MATCH(TRUE,ISNUMBER(1*MID(D2,ROW($1:$8),1)),0),COUNT(1*MID(D2,ROW($1:$8),1))))"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:30:45