excel VBA公式抛出#name错误

时间:2017-11-07 18:51:18

标签: excel vba excel-vba

我的子createTrip()创建了一个新的工作表和一个表。

它工作得很好,但我对所有数据范围单元使用这一功能。该函数计算顶行和左行中坐标之间的距离。 该功能本身有无错误

=ARCCOS(SIN(E$3*PI()/180)*SIN($C5*PI()/180)+COS(E$3*PI()/180)*COS($C5*PI()/180)*COS(($D5*PI()/180)-(E$4*PI()/180)))*6367.4445

(我还试图像=ARCCOS(SIN(Processing!E$3*PI()/1...一样将工作表名称添加到它 - 没有任何成功。)

问题是,当我的sub完成后,所有数据范围单元格中都会出现#NAME - 错误。 点击单元格,点击公式栏并点击返回工作表即可删除错误。 我试图在我的sub中添加一些重新计算行,但这没有帮助:

ws.EnableCalculation = False
ws.EnableCalculation = True

我还能做什么?

该公式适用于具有VBA的单元格,如下所示:

Dim Pro As Worksheet
Set Pro = ThisWorkbook.Sheets("Processing")

   // start for loop (ii)

        // if maximum ii is reached:

        With Pro
            Set distanceRange = .Range(.Cells(5, 5), .Cells(ii + 6, ii + 6))
        End With

        distanceRange.Select
        distanceRange.Formula = "=ARCCOS(SIN(E$3*PI()/180)*SIN($C5*PI()/180)+COS(E$3*PI()/180)*COS($C5*PI()/180)*COS(($D5*PI()/180)-(E$4*PI()/180)))*6367.4445"

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

使用ACOS而不是ARCCOS

=ACOS(SIN(E$3*PI()/180)*SIN($C5*PI()/180)+COS(E$3*PI()/180)*COS($C5*PI()/180)*COS(($D5*PI()/180)-(E$4*PI()/180)))*6367.4445

答案 1 :(得分:0)

此处的问题是使用完全相同的Excel公式,如果 Excel语言设置为与英语不同的语言。

在VBA中,我们必须用英语编写公式。 (西班牙例子):

Application.Range(“'Hoja1'!T3”)。公式=“= MODA(O8:O”& row_set&“)”“Throw #Name error

  

从西班牙语的“MODA”功能改为英语的“MODE”功能

Application.Range(“'Hoja1'!T3”)。Formula =“= MODE(O8:O”& row_set&“)”Work as expected

尝试使用此tool进行功能翻译