使用VBA向单元格写入带引号的公式时报错问题求助
解决VBA中给合并列公式添加空格时报错的问题
我太懂你遇到的这个坑了!在VBA里写Excel公式时,字符串里的双引号需要特殊处理——直接用单个双引号会被VBA当成字符串的结束标记,公式结构瞬间就乱了,自然会触发报错。
问题根源
你想用的Excel公式=A4 & " " & B4(或=CONCATENATE(A4," ",B4))里," "是Excel公式用来表示空格的字符串,但放到VBA的字符串中时,VBA会把第一个"当成你这个.Formula字符串的结束符,后面的内容就变成了无效代码,报错也就理所当然了。
解决方案:转义双引号
在VBA里,要表示Excel公式中的单个双引号,需要用**两个连续的双引号""**来转义。下面是修正后的代码:
方法1:直接修改拼接公式
With ws3.Range("E4:E" & LastRow3) .Formula = "=A4&"" ""&B4" End With
这里的"" ""在VBA解析后,传递给Excel的就是公式需要的" ",完美解决引号冲突问题。
方法2:用CONCATENATE函数的写法
如果偏好CONCATENATE函数,同样需要转义双引号:
With ws3.Range("E4:E" & LastRow3) .Formula = "=CONCATENATE(A4,"" "",B4)" End With
可选小技巧:用Chr(34)替代双引号
如果觉得双引号转义看着眼晕,也可以用Chr(34)(双引号的ASCII码)来代替,可读性会更好:
Dim spacePlaceholder As String spacePlaceholder = Chr(34) & " " & Chr(34) With ws3.Range("E4:E" & LastRow3) .Formula = "=A4&" & spacePlaceholder & "&B4" End With
以后在VBA里写包含字符串的Excel公式,记得把公式里的单个双引号换成两个,这是VBA和Excel公式交互的通用规则,别再踩这个小坑啦!
内容的提问来源于stack exchange,提问作者Batyr Nazarov
相关产品推荐
相关产品推荐

