2017-05-16 3 views
0

루프의 해 찾기는 첫 번째 반복에서는 작동하지만 나머지는 작동하지 않습니다. 나머지 루프는 정상적으로 작동합니다.Excel VBA : 해 찾기가 루프에서 작동하지 않습니다.

Sub Macro1() 

Sheets("model").Select 
Dim i As Double 
Dim p As Double 


For i = 1 To 10 
p = -0.1565 + ((i - 1) * 0.0015) 
Sheets("model").Range("J15").Value = p 


SolverOk SetCell:="$J$12", MaxMinVal:=2, ValueOf:=0, ByChange:="$B$4:$F$4", _ 
    Engine:=1, EngineDesc:="GRG Nonlinear" 
SolverOk SetCell:="$J$12", MaxMinVal:=2, ValueOf:=0, ByChange:="$B$4:$F$4", _ 
    Engine:=1, EngineDesc:="GRG Nonlinear" 
SolverSolve (True) 



Sheets("rec").Select 
Range("B1:H1").Select 
Selection.Copy 
Sheets("rec").Range(Cells((i + 4), 2), Cells((i + 4), 8)).Select 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
Range("C5").Select 

Next i 

End Sub 

답변

0

불행하게도, 해 찾기는 시트가 활성화되어있는 경우 작동, 그래서 첫 번째 SolverOk 문 앞에

Worksheets("model").Activate 

를 삽입합니다.

Sub Macro1() 

    Dim i As Long 
    Dim p As Double 

    For i = 1 To 10 
     p = -0.1565 + ((i - 1) * 0.0015) 
     With Worksheets("model") 
      .Activate 
      .Range("J15").Value = p 
      SolverOk SetCell:="$J$12", _ 
        MaxMinVal:=2, _ 
        ValueOf:=0, _ 
        ByChange:="$B$4:$F$4", _ 
        Engine:=1, _ 
        EngineDesc:="GRG Nonlinear" 
      SolverOk SetCell:="$J$12", _ 
        MaxMinVal:=2, _ 
        ValueOf:=0, _ 
        ByChange:="$B$4:$F$4", _ 
        Engine:=1, _ 
        EngineDesc:="GRG Nonlinear" 
      SolverSolve True 
     End With 

     With Worksheets("rec") 
      .Range(.Cells(i + 4, "B"), .Cells(i + 4, "H")).Value = .Range("B1:H1").Value 
     End With 
    Next i 
End Sub 
+0

감사합니다. YowE3K, 작동했습니다 :) – amanized

관련 문제