如下图所示

当用vba给excel工作簿添加如上图所示的公式名称“计算文本字符串”,代码如下:
Sub QQ1722187970()
Dim oName As Name
Dim oWB As Workbook
Dim oWK As Worksheet
Set oWB = Excel.ThisWorkbook
Set oName = oWB.Names.Add(Name:="计算文本字符串", RefersTo:="=EVALUATE(Sheet1!A1)")
End Sub
会显示如下图所示的错误:

这是为什么呢?
当把Evaluate去掉后,修改代码为如下:
Sub QQ1722187970()
Dim oName As Name
Dim oWB As Workbook
Dim oWK As Worksheet
Set oWB = Excel.ThisWorkbook
Set oName = oWB.Names.Add(Name:="计算文本字符串", RefersTo:="=Sheet1!A1")
End Sub
运行可以通过,原来当用VBA为excel添加名称时,如果引用的公式里面带有了宏表函数,不能添加A1形式的公式引用,需要改成R1C1形式的公式引用,为此,修改代码如下后可以运行通过了:
Sub QQ1722187970()
Dim oName As Name
Dim oWB As Workbook
Dim oWK As Worksheet
Set oWB = Excel.ThisWorkbook
'用R1C1形式的公式引用才能添加宏表函数
Set oName = oWB.Names.Add(Name:="计算文本字符串", RefersToR1C1:="=EVALUATE(Sheet1!R1C1)")
End Sub


发表评论