如何修改VBA代码实现拼接另一工作簿两个单元格的值
你代码的核心错误是 VBA中为单元格赋值公式时,参数分隔符需使用英文逗号(,)而非分号(;),分号是部分本地化区域设置下的界面显示分隔符,不适用于VBA直接赋值公式的场景。
正确写法示例
方案1:修正后的CONCATENATE版本
OpenedWb.Worksheets(DestinationSheet).Range("E23:I23").FormulaR1C1 = _ "=CONCATENATE([" & mainFilename & "]" & mainSheet & "!" & SelectedData.EntireRow.Cells(1, "U").Address(ReferenceStyle:=xlR1C1) & _ ",[" & mainFilename & "]" & mainSheet & "!" & SelectedData.EntireRow.Cells(1, "V").Address(ReferenceStyle:=xlR1C1) & ")"
方案2:更简洁的&运算符拼接(推荐,写法更短效率一致)
OpenedWb.Worksheets(DestinationSheet).Range("E23:I23").FormulaR1C1 = _ "=[" & mainFilename & "]" & mainSheet & "!" & SelectedData.EntireRow.Cells(1, "U").Address(ReferenceStyle:=xlR1C1) & _ "&[" & mainFilename & "]" & mainSheet & "!" & SelectedData.EntireRow.Cells(1, "V").Address(ReferenceStyle:=xlR1C1)
额外注意项
如果你的mainFilename对应文件路径包含空格、特殊字符,需要在工作簿+工作表名称的外侧包裹单引号,避免公式识别错误,示例如下:
' 带单引号兼容特殊路径的写法 OpenedWb.Worksheets(DestinationSheet).Range("E23:I23").FormulaR1C1 = _ "='[" & mainFilename & "]" & mainSheet & "'!" & SelectedData.EntireRow.Cells(1, "U").Address(ReferenceStyle:=xlR1C1) & _ "&'[" & mainFilename & "]" & mainSheet & "'!" & SelectedData.EntireRow.Cells(1, "V").Address(ReferenceStyle:=xlR1C1)
内容的提问来源于stack exchange,提问作者Dark Archon
相关产品推荐
相关产品推荐

