0
我試圖爲VBA Excel循環解算器命令,並獲取有關模型中的變量和條件的錯誤消息。該模型的想法是找到一系列的債務和股權融資,以便現金餘額爲零,債務和股權部分滿足某些契約(在解算器運行時作爲邊界)。VBA Excel - 循環中的求解器返回錯誤的參考更改單元格和條件
這裏是我的代碼:
Sub Debt_Capital_Balancing()
Application.ScreenUpdating = False
Dim Early_Repmnt As String, CashBeforeSolver As Variant, CED As Variant, _
DR As Variant, CC As Variant, TW As Single, NDE As Single, DE As Single, W As Single
K = Range("Forecast_periods").Count
Range("Debt_Received, Debt_Early_Repayment, RE_Distribution, _ CC_APIC_Change").ClearContents
For i = 1 To K
CashBeforeSolver = Abs(Range("Cash_Excess_Deficit").Cells(1, i).Value)
CED = Range("Cash_Excess_Deficit").Cells(1, i).Value
DR = Range("Debt_Received").Cells(1, i).Value
CC = Range("CC_APIC_Change").Cells(1, i).Value
TW = Range("Target_WACC").Cells(1, i).Value
NDE = Range("Net_Debt_To_EBITDA").Cells(1, i).Value
DE = Range("D_E").Cells(1, i).Value
W = Range("WACC").Cells(1, i).Value
SolverReset
SolverOk SetCell:=CED, MaxMinVal:=3, ValueOf:=0, ByChange:="DR,CC", Engine:=3, EngineDesc:="Evolutionary"
SolverAdd cellRef:=DR, Relation:=3, FormulaText:=0
SolverAdd cellRef:=CC, Relation:=3, FormulaText:=0
SolverAdd cellRef:=DR, Relation:=1, FormulaText:=CashBeforeSolver
SolverAdd cellRef:=CC, Relation:=1, FormulaText:=CashBeforeSolver
SolverAdd cellRef:=NDE, Relation:=1, FormulaText:="Target_Net_Debt_To_EBITDA"
SolverAdd cellRef:=DE, Relation:=1, FormulaText:="Target_D_E_Ratio"
SolverAdd cellRef:=W, Relation:=1, FormulaText:=TW
SolverOptions MaxTime:=0, Iterations:=0, Precision:=0.00001, _
Convergence:=0.0001, StepThru:=False, Scaling:=True, AssumeNonNeg:=False, Derivatives:=1
SolverOptions PopulationSize:=100, RandomSeed:=0, MutationRate:=0.075, _
Multistart:=False, RequireBounds:=True, MaxSubproblems:=0, MaxIntegerSols:=0, _
IntTolerance:=0.1, SolveWithout:=False, MaxTimeNoImp:=200
SolverSolve
Next i
End Sub
我猜我錯誤地引用到變量求解器模式。 有人可以幫我嗎?可能還有其他一些方法來引用不斷變化的細胞和動態條件嗎?
非常感謝,
尤里
什麼是您的錯誤消息。 –
單步執行代碼: 1.在哪一行發生錯誤? 2:什麼是錯誤(從Dy.Lee起) – peakpeak