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