在 Aspen Plus 中,我实现了一个 Excel 计算器块,它调用了一个包含求解器优化的 VBA 子程序。为此,我使用了 Worksheet Change Private Sub。在电子表格中,计算初始猜测。然后,当满足 sub 的执行条件时(单元格 A14 = 0),初始猜测被复制到执行求解器的单元格中。
我确保在 VBA 中启用了对 Solver 的引用。
在“外部”Aspen 测试时,代码运行良好。然而,当从 Aspen 运行时,它似乎跳过了与求解器执行相关的代码行(即,它将 G 列中的值复制到 H 列并更改测试单元格的颜色,但不运行优化问题)。
我相信当潜艇从 Aspen 运行时,事件序列中一定存在某种干扰。
PS:我正在使用 Aspen Plus V12.1 和 Excel Professional Plus 2019
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Set rng = Range("$A$14")
If rng.Value = 0 Then
' Disabling Event Change so all the code executes right away once the execution condition is met
Application.EnableEvents = False
' Testing the sub runs (Changing colors in cells A10 and A11)
Range("$A$10").Interior.ColorIndex = 3
Range("$A$11").Interior.ColorIndex = 1
' Setting initial guess
Range("$G$59").Value = Range("$H$59").Value
Range("$G$60").Value = Range("$H$60").Value
Range("$G$61").Value = Range("$H$61").Value
Range("$G$62").Value = Range("$H$62").Value
Range("$G$63").Value = Range("$H$63").Value
Range("$G$64").Value = Range("$H$64").Value
Range("$G$65").Value = Range("$H$65").Value
Range("$G$66").Value = Range("$H$66").Value
Range("$G$67").Value = Range("$H$67").Value
' Executing Solver
SolverOk SetCell:="$D$81", MaxMinVal:=2, ValueOf:=0, ByChange:="$G$59:$G$67", _
Engine:=2, EngineDesc:="Simplex LP"
SolverSolve (True)
' Approve the soulution given by Solver and avoid the popups
SolverSolve userFinish:=True
SolverFinish KeepFinal:=1
' Testing the sub runs (Changing color in cell A12)
Range("$A$12").Interior.ColorIndex = 1
' Enabling Event Change
Application.EnableEvents = True
End If
End Sub