在手动加载解算器以及通过VBA获取错误438

时间:2017-05-22 09:34:01

标签: excel excel-vba excel-2010 solver excel-2016 vba

我正在尝试通过以下代码加载解算器:

Set r = Range("BC3")
For i = 1 To 2

    SolverReset
    score = r.Value

    If score = 1 Then
        SolverLoad loadArea:=r.Offset(1).Resize(8)
        SolverSolve UserFinish:=True
        SolverFinish KeepFinal:=1
        SolverReset
        SolverLoad loadArea:=r.Offset(1, 1).Resize(11)
        SolverSolve UserFinish:=True
        SolverFinish KeepFinal:=1
        SolverReset
    Else:
        SolverReset
        SolverLoad loadArea:=r.Offset(1, 2).Resize(12)
        SolverSolve UserFinish:=True
        SolverFinish KeepFinal:=1
    End If

    Set r = r.Offset(43)

Next i

代码给了我一个

  

错误438:object不支持此属性或方法。

错误在这一行:

SolverLoad loadArea:=r.Offset(1, 2).Resize(12)

我尝试手动加载相同的范围,它再次给了我同样的错误。

注意:我正在成功将不同的Excel文件中的相同数据加载!但是当我更改文件并加载数据时,它会给我一个错误。

如果有人知道原因,请帮助我。

1 个答案:

答案 0 :(得分:2)

我有类似的问题。我发现在复制工作表时我保留了宏按钮。我删除了它们并再次创建它们,给出了不同的名称,问题就解决了。