VBA - Ошибка переполнения при запуске подпрограммы - PullRequest
0 голосов
/ 22 октября 2018

Я очень плохо знаком с VBA и хотел бы получить отзыв об ошибке переполнения, с которой я сталкиваюсь при запуске своего кода.Я объявил все переменные как Double (так как я имею дело с большими числами), каждый Sub представляет свой набор уравнений, используемых для решения проблемы, которую я пытаюсь решить.Эти значения затем печатаются в рабочем листе Excel с помощью команды «Range.value».Концепция кода очень проста - в основном, вставляя значения из электронной таблицы и вычисляя результат.Любая помощь будет принята с благодарностью.

Скриншот листа Excel

Option Explicit

Dim T, m, d, xb, bh, bd, bm, Th, Tv, phi, L, B, bdr, w, s, a, Pi, h, X1, X2 As Double

Sub Thoriz(T, w, d, Th)
'To calculate the horizontal force on the anchor
Th = T - (w * d)

End Sub

Sub Angle(Th, T, phi, X1)
'To calculate the angle of catenary at connection
X1 = Th / T
phi = Atn(-X1 / Sqr(-X1 * X1 + 1)) + 2 * Atn(1)

End Sub

Sub Tvert(T, phi, s, w, Tv)
'To calculate the total line length
Tv = T * Sin(phi)

s = Tv / w
End Sub

Sub spreadlength1(a, s, d, h, X2)
'To calculate the total spread length
a = ((s ^ 2) - (d ^ 2)) / (2 * d)

X2 = 1 + d / a

h = a * ((Exp(X2) + Exp(–X2)) / 2)

End Sub

Sub spreadlength(B, xb, h)

'Spread length
B = 2 * (xb + h)

End Sub

Sub Caculations()

'INPUTTING OF VALUES
        T = Range("D3").Value
        m = Range("D4").Value
        d = Range("D5").Value
        xb = Range("D6").Value
        bh = Range("D7").Value
        bd = Range("D8").Value
        bm = Range("D9").Value

 'CALCULATIONS
        'Calculating the Horizontal force on the anchor
        Call Thoriz(T, w, d, Th)

        'Calculating the angle of catenary at the connection
        Pi = 3.1415926536 'Defining the value of Pi
        phi = phi * 180 / (Pi) 'Conversion of rad to deg
        Call Angle(Th, T, phi, X1)

        'Calculating the total line length
        Call Tvert(T, phi, s, w, Tv)

        'Calculating the spread length
        Call spreadlength1(a, s, d, h, X2)
        Call spreadlength(B, xb, h)

        'OUTPUTTING OF VALUES
        Range("D13").Value = Th
        Range("D14").Value = phi
        Range("D15").Value = L
        Range("D16").Value = B
        Range("D17").Value = bdr

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...