0

在 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
4

0 回答 0