2015-07-10 4 views
0

пытался вызвать sub (trialMacro) из другого суб (Macro2), но каким-то образом он не активируется. Есть ли причина, почему? Функция вызова работает нормально, если она не находится внутри цикла. То есть если я просто выполняю функцию обычного вызова под другим суб. Правильно ли мое кодирование? Я не уверен, если цикл нарушает КазньВызов sub внутри цикла

' trial Macro 
Sub trialMacro() 
Dim PrevCell As Range 
Set PrevCell = ActiveCell 
    SolverOk SetCell:=ActiveCell, MaxMinVal:=2, ValueOf:="0", ByChange:= _ 
     "$M$2,$M$3,$M$5,$M$7" 
    SolverSolve UserFinish:=True 
    SolverFinish KeepFinal:=1 
    'Copy in sample and out of sample error 
    PrevCell.Resize(1, 3).Copy 

    'Paste Values of in sample and out of sample errors 
    PrevCell.Offset(0, 4).Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 

    'Copy Co-efficient 
    Range("M2:M7").Select 
    Application.CutCopyMode = False 
    Selection.Copy 

    'Select paste destination 
    PrevCell.Offset(0, 7).Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=True 

    'Copy Paste Following months data 
    PrevCell.Offset(1, -1).Resize(12, 1).Copy 

    'Select target destination 
    PrevCell.Offset(0, 13).Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=True 
PrevCell.Offset(1, 0).Select 
End Sub 

Sub Macro2() 
' 
' Macro2 Macro 
    Dim i, j As Integer 

    For i = 50 To 162 
    For j = 0 To 113 
    Sheets("Model v2 DUBDAT >0").Cells(i, 17).Select 
    Call trialMacro 
    Range("P50:BA50").Offset(j, 0).Select 
    Application.CutCopyMode = False 
    Selection.Copy 
    Sheets("Reference Sheet").Select 
    Range("D6").Offset(j, 0).Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Sheets("Model v2 DUBDAT >0").Select 
    Next 
    Next 
End Sub 
+0

Вы должны попробовать назначить объекты, а не так много ** '.Select' ** и **' Selection' **. То, как вы используете ** Call **, прекрасно здесь. – PatricK

ответ

0

Дайте это читать ...

https://msdn.microsoft.com/en-us/library/office/gg251432.aspx

Удалить вызов из этой линии

Call trialMacro 

Должно быть ..

trialMacro 

Если вы используете оператор вызова, за ним должны следовать скобки.

+0

hmmm, я понял, что проблема с моей первой петлей также в том, что она не идет по столбцу. любые входы? – Nat

Смежные вопросы