If there is explicit or implicit recursion going on, you can get a stack 
overflow problem.  For example, if EIC calls PC, and PC calls EIC, you can 
generate a call stack of such depth that you run out of stack space.

I will confess, though, that I have not looked at the code you included in any 
depth, and I have no idea whether there is, in fact, any recursion here, or 
what else might be going  on.

-----Original Message-----
From: excel-macros@googlegroups.com [mailto:[EMAIL PROTECTED] On Behalf Of 
[EMAIL PROTECTED]
Sent: Tuesday, September 09, 2008 1:17 PM
To: MS Excel & VBA Macros
Subject: $$Excel-Macros$$ Stack error problem


My apologies for posting code. What it should do is list how much to
produce for a given demand over a period. When I try to run this I get
a message about being out of stack space (28). EIC and PC are
functions. If anyone has a clue on why I am triggering the stack
error, please let me know. Thanks

Option Explicit
Dim Min_cost(10, 101) As Integer, Opt_Prod(10, 101) As Integer,
Demand(10) As Integer, XStar(10) As Integer
Public N_Per As Integer, MaxInv As Integer, MaxProd As Integer,
InitInv As Integer
Public MinLim As Integer, MaxLim As Integer, LLim As Integer, Hold As
Integer, InvOld As Integer, InvNew As Integer
Public I As Integer, II As Integer, J As Integer, K As Integer, Z As
Integer, Sum As Integer

Sub prod()

N_Per = Cells(1, 2).Value
MaxInv = Cells(2, 2).Value
MaxProd = Cells(3, 2).Value
InitInv = Cells(4, 2).Value

For I = 1 To N_Per
    Demand(I) = Cells(9, I + 1).Value
Next I

If Demand(N_Per) <> 0 Then
    For I = 1 To Demand(N_Per)
        Min_cost(N_Per, I) = PC(N_Per, Demand(N_Per) - I + 1)
        Opt_Prod(N_Per, I) = Demand(N_Per) - I + 1
    Next I
End If

Min_cost(N_Per, Demand(N_Per) + 1) = 0
Opt_Prod(N_Per, Demand(N_Per) + 1) = 0

For II = 1 To (N_Per - 1)
 I = N_Per - II
 Sum = 0
 For J = I To N_Per
    Sum = Sum + Demand(J)
 Next J
 Sum = Sum + 1
 If Sum >= MaxInv + 1 Then
    MinLim = MaxInv + 1
 Else
    MinLim = Sum
 End If
 For K = 1 To MinLim
    If Demand(I) - K + 1 <= 0 Then
        LLim = 0
        Min_cost(I, K) = EIC(I, K - Demand(I) - 1) + Min_cost(I + 1, K
- Demand(I))
        Opt_Prod(I, K) = 0
    Else
        LLim = Demand(I) - K + 1
        Min_cost(I, K) = PC(I, LLim) + EIC(I, 0) + Min_cost(I + 1, 1)
        Opt_Prod(I, K) = Demand(I) - K + 1

    End If
    LLim = LLim + 1
    If MaxProd > Sum - K And Sum - K > Demand(I) + MaxInv + 1 - K Then
        MaxLim = Demand(I) + MaxInv + 1 - K
    ElseIf MaxProd > Sum - K And Sum - K <= Demand(I) + MaxInv + 1 - K
Then
        MaxLim = Sum - K
    ElseIf MaxProd <= Sum - K And MaxProd > Demand(I) + MaxInv + 1 - K
Then
        MaxLim = Demand(I) + MaxInv + 1 - K
    ElseIf MaxProd <= Sum - K And MaxProd <= Demand(I) + MaxInv + 1 -
K Then
        MaxLim = MaxProd
    End If
    If LLim - 1 <> MaxLim Then
        For Z = LLim To MaxLim
        Hold = PC(I, Z) + EIC(I, K + Z - Demand(I) - 1) + Min_cost(I +
1, K + Z - Demand(I))
        If Min_cost(I, K) > Hold Then
            Min_cost(I, K) = Hold
            Opt_Prod(I, K) = Z
        End If
        Next Z
    End If

    Next K
 Next II
 XStar(1) = Opt_Prod(1, InitInv + 1)
 InvOld = InitInv + 1
 For I = 2 To N_Per
 InvNew = XStar(I - 1) - Demand(I - 1) + InvOld
 XStar(I) = Opt_Prod(I, InvNew)
 InvOld = InvNew
 Next I
 Cells(12, 2).Value = Min_cost(1, InitInv + 1)
 For J = 1 To N_Per
 Cells(13, J + 1).Value = J
 Cells(14, J + 1).Value = XStar(J)
 Next J
End Sub





--~--~---------~--~----~------------~-------~--~----~
Visit the blog to download Excel tutorials at 
http://www.excel-macros.blogspot.com

To post to this group, send email to excel-macros@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/excel-macros?hl=en

Visit & Join Our Orkut Community at 
http://www.orkut.com/Community.aspx?cmm=22913620

Visit the blog to download Excel tutorials at 
http://www.excel-macros.blogspot.com

To Learn VBA Macros Please visit http://www.vbamacros.blogspot.com

To see the Daily Excel Tips, Go to:
http://exceldailytip.blogspot.com
-~----------~----~----~----~------~----~------~--~---

Reply via email to