VBA Excel 溢出错误
VBA Excel Overflow error
有人可以解释这段代码中的错误吗?我收到溢出错误。首先,我认为这可能是由于我放弃了 n1、n2 的大输入值(顺序 10000),即使在将它们的值减少到几百之后我也收到了这个错误。
Private Sub CommandButton1_Click()
Dim Ds1, Ds2, Ds3, Ds4, Ds5, n1, n2, n3, n4, n5, C, m, a0, w, D, N, i, Pi As Double
Pi = 3.14159265359
Ds1 = TextBox8.Text
n1 = TextBox10.Text
Ds2 = TextBox13.Text
n2 = TextBox14.Text
Ds3 = TextBox17.Text
n3 = TextBox18.Text
Ds4 = TextBox11.Text
n4 = TextBox12.Text
Ds5 = TextBox15.Text
n5 = TextBox16.Text
C = TextBox20.Text
m = TextBox19.Text
a0 = TextBox22.Text
w = TextBox21.Text`
D = Sqr(((n1 * (Ds1 ^ 2)) + (n2 * (Ds2 ^ 2)) + (n3 * (Ds3 ^ 2)) + (n4 * (Ds4 ^ 2)) + (n5 * (Ds5 ^ 2))) / (n1 + n2 + n3 + n4 + n5))
N = n1 + n2 + n3 + n4 + n5
ReDim af1(N) As Double
ReDim Y(N) As Double
af1(0) = a0
For i = 1 To N
Y(i) = 1.12 - (0.23 * (af1(i - 1) / w)) + (10.55 * ((af1(i - 1) / w) ^ 2)) - (21.72 * ((af1(i - 1) / w) ^ 3)) + (30.39 * ((af1(i - 1) / w) ^ 4))
af1(i) = af1(i - 1) + (C * (D ^ m) * (Pi ^ (m / 2)) * ((af1(i - 1)) ^ (m / 2)) * (Y(i) ^ m))
Next i
TextBox11.Text = af1(N)
End Sub
尝试将所有变量声明为 Double。目前只有 Pi 是 double。如果你说
Dim D1, D2 as Double
那么只有 D2 是 Double。 D1 是变体。应该是
Dim D1 as Double, D2 as Double
等等
同时投射您的文本框值:
Ds1 = CDbl(TextBox8.Text)
有人可以解释这段代码中的错误吗?我收到溢出错误。首先,我认为这可能是由于我放弃了 n1、n2 的大输入值(顺序 10000),即使在将它们的值减少到几百之后我也收到了这个错误。
Private Sub CommandButton1_Click()
Dim Ds1, Ds2, Ds3, Ds4, Ds5, n1, n2, n3, n4, n5, C, m, a0, w, D, N, i, Pi As Double
Pi = 3.14159265359
Ds1 = TextBox8.Text
n1 = TextBox10.Text
Ds2 = TextBox13.Text
n2 = TextBox14.Text
Ds3 = TextBox17.Text
n3 = TextBox18.Text
Ds4 = TextBox11.Text
n4 = TextBox12.Text
Ds5 = TextBox15.Text
n5 = TextBox16.Text
C = TextBox20.Text
m = TextBox19.Text
a0 = TextBox22.Text
w = TextBox21.Text`
D = Sqr(((n1 * (Ds1 ^ 2)) + (n2 * (Ds2 ^ 2)) + (n3 * (Ds3 ^ 2)) + (n4 * (Ds4 ^ 2)) + (n5 * (Ds5 ^ 2))) / (n1 + n2 + n3 + n4 + n5))
N = n1 + n2 + n3 + n4 + n5
ReDim af1(N) As Double
ReDim Y(N) As Double
af1(0) = a0
For i = 1 To N
Y(i) = 1.12 - (0.23 * (af1(i - 1) / w)) + (10.55 * ((af1(i - 1) / w) ^ 2)) - (21.72 * ((af1(i - 1) / w) ^ 3)) + (30.39 * ((af1(i - 1) / w) ^ 4))
af1(i) = af1(i - 1) + (C * (D ^ m) * (Pi ^ (m / 2)) * ((af1(i - 1)) ^ (m / 2)) * (Y(i) ^ m))
Next i
TextBox11.Text = af1(N)
End Sub
尝试将所有变量声明为 Double。目前只有 Pi 是 double。如果你说
Dim D1, D2 as Double
那么只有 D2 是 Double。 D1 是变体。应该是
Dim D1 as Double, D2 as Double
等等
同时投射您的文本框值:
Ds1 = CDbl(TextBox8.Text)