vba操作规划求解

本文介绍了如何使用VBA进行Excel规划求解,详细阐述了SolverReset、SolverOk、SolverAdd、SolverFinish和SolverSolve等关键函数的用法,并提供了一个简单案例来演示实践操作。
摘要由CSDN通过智能技术生成

要前期引用

要使用vba操作规划求解,需要添加引用Solver
Program Files\Microsoft Office\Office14\Library\SOLVER 子文件夹中的 Solver.xlam

可以用代码直接操作,需弹窗后点击信任对VBA工程对象模型的访问

Sub 用vba代码添加模型信任和前期引用规划求解()
    Dim oWshell, i
    Set oWshell = CreateObject("WScript.Shell")
    Application.ScreenUpdating = False
    '信任对VBA工程对象模型的访问
    oWshell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office" & Application.Version & "\Excel\Security\AccessVBOM", 1, "REG_DWORD"  '信任对 VBA 项目的访问
    With Application
        .SendKeys "~"
        .CommandBars.FindControl(ID:=3627).Execute
    End With
    AddIns("规划求解加载项").Installed = True
    With ThisWorkbook.VBProject
        For i = 1 To .References.Count
            If .References(i).Name = "Solver" Then
                Exit Sub
            Else
                If i = .References.Count Then
                    ThisWorkbook.VBProject.References.AddFromFile "SOLVER.XLAM"
                End If
            End If
        Next i
    End With
    Application.ScreenUpdating = True
End Sub

用到的函数

1,SolverReset

重置 “规划求解参数” 对话框中的所有单元格选定区域和约束

2,SolverOk 函数

定义基本求解器模型。 相当于在"数据分析**“组中单击**“规划求解”,然后在"规划求解参数” | 对话框中指定 选项。
SolverOk ( SetCell、MaxMinVal、ValueOf、ByChange、Engine、EngineDesc )

  • SetCell 是 Variant 类型的可选参数(不要给单元格,给单元格地址)。 引用活动工作表中的一个单元格。 对应于" 规划求解参数 "对话框中的"设置 目标单元格 "框。
  • MaxMinVal 是 Variant 类型的可选参数。 对应于"规划求解参数"对话框中 的"最大值"、最小值 和"值" 选项。
MaxMinVal 指定
1 最大
2 最小化
3 匹配特定值
  • ValueOf 是 Variant 类型的可选参数。 如果 MaxMinVal 为 3,则必须指定目标单元格匹配到的值。
  • ByChange 是 Variant 类型的可选参数(不要给单元格,给单元格地址)。 将更改的单元格或单元格范围,以便在目标单元格中获得所需的结果。 对应于"规划 求解参数" 对话框中的"通过 更改单元格" 框。
  • Engine 是 Variant 类型的可选参数。 应用来求解问题的求解方法:2 表示单纯形 LP 方法,1 表示 GRG 非线性方法,或 3 表示演进式方法。 对应于" 规划求解参数 “对话框中的"选择求解 方法” 下拉列表。
  • EngineDesc 是 Variant 类型的可选参数。 另一种以字符串形式指定应用来求解问题的求解方法的方式:“单纯形 LP”、“GRG 非线性”或“演进式”。 对应于" 规划求解参数 “对话框中的"选择求解 方法” 下拉列表。

3,SolverAdd 函数

向当前问题添加一个约束。 相当于在"数据分析" 组中 单击&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lyfegf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值