2014-05-24 28 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找不到「數據」工作表。如果您嘗試使用相同的語法從即時窗口中選擇它或引用一個範圍,會發生什麼情況? –

回答