Excel VBA编写公式时如何引用另一工作簿的命名单元格
错误原因
你遇到的#NAME?错误来自两个核心问题:
- 语法错误:VBA拼接公式字符串时,字符串内部的双引号需要用两个双引号转义,你原代码中用于表示空格的
" "写法不符合语法规则,会导致公式内容解析异常。 - 引用错误:你的
Date是第一个工作簿的命名单元格,直接写在公式中时Excel无法识别其所属的工作簿,缺少跨工作簿引用标识。
解决方案
根据你是否需要后续动态更新内容,可选择两种实现方式:
场景1:需要动态同步第一个工作簿的Date值
如果希望第一个工作簿的Date单元格修改后,第二个工作簿的对应内容自动更新,可直接引用跨工作簿的命名范围:
' 代码运行在存储Date命名单元格的第一个工作簿中 ActiveCell.FormulaR1C1 = _ "=CONCATENATE(R[5]C[1],"" "",R[10]C[2],"" "",""from"","" "",'" & ThisWorkbook.Name & "'!Date)"
注意:使用该方式时如果第一个工作簿被删除或移动,第二个工作簿的公式会出现引用错误。
场景2:写入时固定Date值,不需要动态更新
如果只需要写入时取当前的Date值、后续不需要同步更新,可直接在VBA中读取值后拼接:
写入带常量的拼接公式
Dim currDate As String ' 可根据需要调整Format内的日期格式规则,比如yyyy-mm-dd、yyyy年mm月dd日 currDate = Format(ThisWorkbook.Range("Date").Value, "yyyy年mm月dd日") ActiveCell.FormulaR1C1 = _ "=CONCATENATE(R[5]C[1],"" "",R[10]C[2],"" "",""from"","" """ & currDate & """)"
直接写入最终文本(无公式)
Dim currDate As String currDate = Format(ThisWorkbook.Range("Date").Value, "yyyy年mm月dd日") With ActiveCell .Value = .Offset(5, 1).Value & " " & .Offset(10, 2).Value & " from " & currDate End With
内容的提问来源于stack exchange,提问作者MilanovI
相关产品推荐
相关产品推荐

