Показать сообщение отдельно
  #93  
Старый 12.03.2013, 18:43
Забанен
 
Регистрация: 06.10.2012
Сообщений: 652
Репутация: 7 [+/-]
Цитата:
Сообщение от Leto III Посмотреть сообщение
VBA Run-time error 6: Overflow
и
№28 Out of stack space
очевидно

Первая намекает на переполнение типа данных, например в тип, объявленный как Integer на практике пишется значение типа Long
Вторая, скорее всего, говорит о том, что рекурсия слишком глубока. Сколько раз вызывается рекурсивно MySum?
Может, код под спойлер с указанием, на каких строках какие баги вылетают?
Скрытый текст - собсвенно код:
Option Explicit

Public Type trade
id As Integer
texta As String
textb As String
textc As String
textd As String
texte As String
End Type

Public Sub asp()
Dim a(0 To 11) As trade, i%, d!, y%, N%, p%, textd%, texte%

For i = 0 To 11


a(i).id = Cells(3 + i, 1)
a(i).texta = Cells(3 + i, 2)
a(i).textb = Cells(3 + i, 3)
a(i).textc = Cells(3 + i, 4)
a(i).textd = Cells(3 + i, 5)
a(i).texte = Cells(3 + i, 6)
Next i

For i = 0 To 11
Cells(3 + i, 7) = a(i).id
Cells(3 + i, 8) = a(i).texta
Cells(3 + i, 9) = a(i).textb
Cells(3 + i, 10) = a(i).textc
Cells(2 + i, 11) = a(i).textd
Cells(2 + i, 12) = a(i).texte
Next i

For i = 0 To 11
"textd = factorial(i)" №6 *over flow
Cells(3 + i, 5) = textd

Next i
For i = 0 To 11
Cells(3 + i, 5) = textd
textd = Fibonacci(i)
Cells(3 + i, 6) = textd


Next i
End Sub

Function factorial(N As Integer) As Long ' (èëè Variant)

If N = 0 Then
factorial = 1
Else
" factorial = factorial(N + 1) - N" out of stack space при изменении в скобках на + over flow* при умножении
End If
End Function
Function Fibonacci(N%)

If N = 0 Then
Fibonacci = 1
Else
Fibonacci = Fibonacci(N - 1) + Fibonacci(N - 1) out of stack space при изменении в скобках на +
End If
End Function


Последний раз редактировалось SpellCaster; 11.06.2013 в 11:13. Причина: оверквотинг
Ответить с цитированием