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

VBA向单元格插入带引号的公式字符串时出现1004错误求助

解决VBA中写入带引号的Excel公式触发1004错误的问题

你的问题核心在于VBA字符串的引号转义和Excel区域设置下的公式参数分隔符这两个关键点没配合好,导致1004语法错误。我给你两种可行的解决方案:

方案1:转义双引号 + 使用FormulaLocal

在VBA中,要在字符串里表示一个双引号,需要写成两个连续的双引号("");同时,因为你的Excel区域用分号(;)作为公式参数分隔符,直接用.Value或.Formula会强制使用逗号(英文区域默认分隔符)导致语法错误,所以必须用.FormulaLocal来匹配本地设置。

修改后的代码如下:

ThisWorkbook.Worksheets("Zazmluvnenia").Range("AM3").FormulaLocal = _
    "=Výkony!M4 & """", """" & TEXT(Výkony!J4;""d.m.yyyy"") & """", """" & TEXT(Výkony!K4;""hh:mm"")"

方案2:用Chr(34)代替双引号(更易读)

如果觉得一堆""看着头疼,可以用Chr(34)来代表双引号(ASCII码34对应双引号),代码可读性会高很多:

' 定义双引号变量,简化拼接
Dim quote As String
quote = Chr(34)

ThisWorkbook.Worksheets("Zazmluvnenia").Range("AM3").FormulaLocal = _
    "=Výkony!M4 & " & quote & ", " & quote & " & TEXT(Výkony!J4;" & quote & "d.m.yyyy" & quote & ") & " & quote & ", " & quote & " & TEXT(Výkony!K4;" & quote & "hh:mm" & quote & ")"

为什么之前会出错?

  • 如果你之前只转义了引号,但用的是.Value或.Formula,Excel会把公式里的分号当成非法字符(因为.Formula默认遵循英文区域的逗号分隔规则),直接触发1004错误;
  • .FormulaLocal会完全尊重你Excel的区域设置,用分号解析参数,同时正确识别转义后的双引号,完美匹配你工作表里能正常运行的公式格式。

内容的提问来源于stack exchange,提问作者Libor Laštůvka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 22:42:52