2014-05-24 31 views
0

我的工作簿有三张表,其中一个名称是“数据”。表()。选择/求解器VBA不工作

为什么地球上的.select方法不起作用? 代码运行正常,没有给予错误,但也不会选择/转移到“数据”表...

Private Sub CommandButton1_Click() 

Dim solverAvailable As Boolean 
solverAvailable = CheckSolver() 

Sheets("Data").Select 
If solverAvailable = True Then 

    SolverReset 
    SolverOk SetCell:="$D$56", MaxMinVal:=2, ValueOf:=0, ByChange:="$C$12:$C$13", _ 
     Engine:=1, EngineDesc:="GRG Nonlinear" 
    SolverSolve True 

    SolverReset 
    SolverOk SetCell:="$H$56", MaxMinVal:=2, ValueOf:=0, ByChange:="$D$12:$D$13", _ 
     Engine:=1, EngineDesc:="GRG Nonlinear" 
    SolverSolve True 

    SolverReset 
    SolverOk SetCell:="$M$56", MaxMinVal:=2, ValueOf:=0, ByChange:="$E$12:$E$13", _ 
     Engine:=1, EngineDesc:="GRG Nonlinear" 
    SolverSolve True 

    SolverReset 
    SolverOk SetCell:="$F$77", MaxMinVal:=2, ValueOf:=0, ByChange:="$C$14:$C$15", _ 
     Engine:=1, EngineDesc:="GRG Nonlinear" 
    SolverSolve True 

    SolverReset 
    SolverOk SetCell:="$L$77", MaxMinVal:=2, ValueOf:=0, ByChange:="$D$14:$D$15", _ 
     Engine:=1, EngineDesc:="GRG Nonlinear" 
    SolverSolve True 

    SolverReset 
    SolverOk SetCell:="$S$77", MaxMinVal:=2, ValueOf:=0, ByChange:="$E$14:$E$15", _ 
     Engine:=1, EngineDesc:="GRG Nonlinear" 
    SolverSolve True 

    SolverReset 
    SolverOk SetCell:="$D$133", MaxMinVal:=2, ValueOf:=0, ByChange:="$C$83:$C$84", _ 
     Engine:=1, EngineDesc:="GRG Nonlinear" 
    SolverSolve True 

    SolverReset 
    SolverOk SetCell:="$H$133", MaxMinVal:=2, ValueOf:=0, ByChange:="$D$83:$D$84", _ 
     Engine:=1, EngineDesc:="GRG Nonlinear" 
    SolverSolve True 

    SolverReset 
    SolverOk SetCell:="$M$133", MaxMinVal:=2, ValueOf:=0, ByChange:="$E$83:$E$84", _ 
     Engine:=1, EngineDesc:="GRG Nonlinear" 
    SolverSolve True 

    SolverReset 
    SolverOk SetCell:="$F$157", MaxMinVal:=2, ValueOf:=0, ByChange:="$C$85:$C$86", _ 
     Engine:=1, EngineDesc:="GRG Nonlinear" 
    SolverSolve True 

    SolverReset 
    SolverOk SetCell:="$L$157", MaxMinVal:=2, ValueOf:=0, ByChange:="$D$85:$D$86", _ 
     Engine:=1, EngineDesc:="GRG Nonlinear" 
    SolverSolve True 

    SolverReset 
    SolverOk SetCell:="$S$157", MaxMinVal:=2, ValueOf:=0, ByChange:="$E$85:$E$86", _ 
     Engine:=1, EngineDesc:="GRG Nonlinear" 
    SolverSolve True 

    SolverReset 
    SolverOk SetCell:="$D$209", MaxMinVal:=2, ValueOf:=0, ByChange:="$C$163:$C$164" _ 
     , Engine:=1, EngineDesc:="GRG Nonlinear" 
    SolverSolve True 

    SolverReset 
    SolverOk SetCell:="$H$209", MaxMinVal:=2, ValueOf:=0, ByChange:="$D$163:$D$164" _ 
     , Engine:=1, EngineDesc:="GRG Nonlinear" 
    SolverSolve True 

    SolverReset 
    SolverOk SetCell:="$M$209", MaxMinVal:=2, ValueOf:=0, ByChange:="$E$163:$E$164" _ 
     , Engine:=1, EngineDesc:="GRG Nonlinear" 
    SolverSolve True 

    SolverReset 
    SolverOk SetCell:="$F$231", MaxMinVal:=2, ValueOf:=0, ByChange:="$C$165:$C$166" _ 
     , Engine:=1, EngineDesc:="GRG Nonlinear" 
    SolverSolve True 

    SolverReset 
    SolverOk SetCell:="$L$231", MaxMinVal:=2, ValueOf:=0, ByChange:="$D$165:$D$166" _ 
     , Engine:=1, EngineDesc:="GRG Nonlinear" 
    SolverSolve True 

    SolverReset 
    SolverOk SetCell:="$S$231", MaxMinVal:=2, ValueOf:=0, ByChange:="$E$165:$E$166" _ 
     , Engine:=1, EngineDesc:="GRG Nonlinear" 
    SolverSolve True 
End If 

Beep 
End Sub 

我真的喜欢纸张选择在里面的,如果,但如果是在那里,它会给出“9”的错误:subscript out of range!理想情况下,我甚至不想选择工作表 - 我想参考工作表(“数据”)。范围(不管),但这也给出了subscript out of range错误。

+0

尝试'ThisWorkbook.Sheets(“Data”)....' –

+0

我试过了,它没有区别。这里是原始文件,如果你想看看https://db.tt/2eaD8n4v – Mierzen

+0

@Mierzen在Excel 2007中,在各种Solver语句中删除对引擎的引用后,它运行良好并选择数据表。下标超出范围错误的事实通常意味着VBA找不到“数据”工作表。如果您尝试使用相同的语法从即时窗口中选择它或引用一个范围,会发生什么情况? –

回答