VBA插入含字符串公式时报错:Expected list separator or )
VBA设置单元格公式编译错误解决
问题分析
你写的代码存在两个核心问题:
- 语法结构错误:错误地将赋值语句
Cells(2, 1).Formula = ...作为WS.Range()的参数,这不符合VBA语法规则,直接导致编译时提示“Expected list separator or )”。 - 字符串转义混乱:虽然知道用双引号转义,但原代码的引号嵌套逻辑混乱,没有正确处理公式中的双引号转义。
正确代码写法
要给第2行第1列的单元格设置目标公式,直接给单元格的Formula属性赋值即可,无需嵌套Range():
写法一:用Cells指定单元格
WS.Cells(2, 1).Formula = "=D2&"".""&E2&"".""&F2&"".""&G2&"".""&H2&"".""&I2&"".""&J2"
写法二:用Range指定单元格地址
WS.Range("A2").Formula = "=D2&"".""&E2&"".""&F2&"".""&G2&"".""&H2&"".""&I2&"".""&J2"
关键说明
- VBA中,若要在字符串里表示一个双引号,必须用两个连续的双引号转义,因此公式里的
"."在VBA字符串中要写成"".""。 - 正确逻辑是先通过
WS.Cells(行号, 列号)或WS.Range("单元格地址")定位目标单元格,再给其Formula属性赋值,不要把赋值语句放进Range的参数中。
内容的提问来源于stack exchange,提问作者kylohansolo
相关产品推荐
相关产品推荐

