为什么用vba给excel添加名称公式报错?

如下图所示

当用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

 

 

       

发表评论