2016-12-12 5 views
0

Может кто-нибудь объяснить причину этого кода? Я получаю ошибку переполнения. Сначала я думал, что это может быть связано с большими входными значениями n1, n2, которые я даю в (порядок 10000), даже после уменьшения значений их до нескольких сотен я получаю эту ошибку.Ошибка переполнения Excel VBA

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 
+0

Это поможет, если вы разместите фактические ошибки и линии вы получите ошибку на. – ojf

+0

Не могли бы вы сказать, где именно происходит ошибка? Это очень помогло бы. – PedroMVM

+0

Не могли бы вы проверить эту ссылку. Я прикрепил два скриншота. https://postimg.org/image/wid3b5n51/ https://postimg.org/image/5w0mm6ixx/ Точная ошибка возникает в этой строке ** ReDim af1 (N) As Double ** –

ответ

0

Попробуйте объявить всю вашу переменную как Двойной. На данный момент только Pi является двойным. Если вы говорите

Dim D1, D2 as Double 

тогда только D2 - это двухместный. D1 - вариант. Он должен быть

Dim D1 as Double, D2 as Double 

и т.д.

также отливать свои значения TextBox:

Ds1 = CDbl(TextBox8.Text) 
+0

Dim C, m, Ds1, n1, a0, Pi, af1, i, w As Двойной Pi = +3,14159265359 С = TextBox13.Text т = TextBox12.Text Ds1 = TextBox8.Text n1 = TextBox10.Text а0 = TextBox14.Text ш = TextBox15.Text ReDim AF1 (n1) As Double ReDim Y (n1) As Double AF1 (0) = a0 Для я = 1 n1 Y (I - 1) = 1,12 - (0,23 * (AF1 (я - 1)/вес)) + (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 * (Ds1^m) * (Pi^(m/2)) * ((af1 (i - 1))^(m/2)) * (Y (i - 1)^m)) Next i TextBox11.Text = af1 (n1) Любая идея, почему в этом коде работало? –

Смежные вопросы