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