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
相关产品推荐
相关产品推荐

