|
发表于 2011-12-23 17:37
|
显示全部楼层
本楼为最佳答案
本帖最后由 yuhe0008 于 2011-12-23 17:38 编辑
Sub 曲线程序1()
AAA:
Dim l As Double '把Dim l As Integer改一下试试
Const r As Integer = 1000 '常量参数声明
Const ls As Byte = 180
Const xzh As Long = 283161.872
Const yzh As Long = 494812.376
Const A As Integer = 138.0510278
'For k = 1 To W
'W = Sheets(5).Range("a10000").End(xlUp).Row - 1
If Sheets(5).Range("c10000").End(xlUp).Offset(1, -2) < 231717.356 Then GoTo LS1
If Sheets(5).Range("c10000").End(xlUp).Offset(1, -2) < 232354.663 Then GoTo LS2
If Sheets(5).Range("c10000").End(xlUp).Offset(1, -2) < 232534.663 Then GoTo LS3
'第1缓和段
LS1:
l = Sheets(5).Range("c10000").End(xlUp).Offset(1, -2) - 231537.356 ‘既然定义了I为integet,且不论你后面减了个带小数的数,INTEGER本身范围才 -32,768 到 32,767 之间
xk1 = l - l ^ 5 / (40 * r ^ 2 * ls ^ 2) + l ^ 9 / (3456 * r ^ 4 * ls ^ 4) - l ^ 13 / (599040 * r ^ 6 * ls ^ 6) + l ^ 17 / (17542600 * r ^ 8 * ls ^ 8) ' 第1缓和段支距计算
yk1 = l ^ 3 / (6 * 1800 * l) - l ^ 7 / (336 * r ^ 3 * ls ^ 3) + l ^ 11 / (42240 * r ^ 5 * ls ^ 5)
x = xzh - yk1 * Sin(Application.WorksheetFunction.Radians(A)) + xk1 * Cos(Application.WorksheetFunction.Radians(A)) ' 第1缓和段计算
y = yzh + yk1 * Cos(Application.WorksheetFunction.Radians(A)) + xk1 * Sin(Application.WorksheetFunction.Radians(A))
Sheets(5).Range("c10000").End(xlUp).Offset(1, 0) = x
Sheets(5).Range("c10000").End(xlUp).Offset(0, 1) = y |
|