Const pi = 3.1415916
Public gjhd As Single, xkjd As Single, zbss As Single, hbss As Single
Sub PCSJS_Click()
Dim pcsjs As Single
gjhd = Range("F4")
xkjd = Range("F5")
pcsjs = 2 * gjhd * (2 / 3) * Tan(Application.Radians(xkjd))
Range("F8") = pcsjs
End Sub
Sub SJJS_Click()
Dim ztb As Single, db As Single, bxb As Single, pcs As Single
Dim zbjd As Single, hbjd As Single, jdjd As Single, jingdu As Single, i As Long, hbhd As Single, zbhd As Single, szbh As Single
gjhd = Range("F4")
xkjd = Range("F5")
zbss = Range("F6")
hbss = Range("F7")
pcs = Range("F8")
'计算直通波
ztb = 1000 * pcs / zbss
Range("C15").Value = ztb
'计算底波
db = 1000 * 2 * ((pcs / 2) ^ 2 + gjhd ^ 2) ^ (1 / 2) / zbss
Range("D15").Value = db
'计算变形波
jdjd = Range("G11").Value
jingdu = Range("G12").Value
If jdjd > 1 Or jdjd < 0.001 Then
MsgBox "请输入正确的角度步进:0.001-1"
GoTo 1
End If
If jingdu > 1 Or jdjd < 0.0001 Then
MsgBox "请输入正确的精度步进:0.0001-1"
GoTo 1
End If
'''''----------------
i = 0
For hbjd = 0 To 90 Step jdjd
hbhd = Application.Radians(hbjd) 'RADIANS 角度转弧度 DEGREES 弧度转角度
szbh = Sin(hbhd) * zbss / hbss
If szbh >= -1 And szbh <= 1 Then
zbhd = Application.Asin(Sin(hbhd) * zbss / hbss)
Else
GoTo 2
End If
zbjd = Application.Degrees(zbhd)
If Abs((Tan(hbhd) * gjhd + Tan(zbhd) * gjhd) - pcs) <= jingdu Then
i = i + 1
Range("G13").Value = hbjd
Range("G14").Value = zbjd
Range("E15").Value = 1000 * (gjhd / Cos(hbhd) / hbss + gjhd / Cos(zbhd) / zbss)
End If
2
Next
If i > 1 Then
MsgBox "有" & i & "对结果," & "结果不唯一,请增大角度步进或者减小精度步进,直到答案唯一!"
ElseIf i = 0 Then
MsgBox "无计算结果,请减小角度步进或者增大精度步进,直到有计算结果!"
ElseIf i = 1 Then
MsgBox "结果唯一,成功!"
End If
1
End Sub