我的子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"
感谢您的帮助!
答案 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进行功能翻译