2014-02-10 4 views
0

Я пытаюсь запустить макрос для генерации данных, и он работал изначально, однако теперь он дает ошибку «subscipt out of range». Пожалуйста, мне нужна помощь:Ошибка времени выполнения, подзаголовок за пределами допустимого диапазона

Sub paste() 
' 
' paste Macro 
' 

Application.ScreenUpdating = False 
Application.Calculation = xlManual 
MyPath = ThisWorkbook.Path 
Sheets("Raw_Data_Agent").Visible = True 
    Sheets("Raw_Data_Agent").Select 
    Columns("B:P").Select 
    Selection.ClearContents 
    Workbooks.Open Filename:=MyPath & "\Raw_Data_Agent.xls" 
    Columns("A:O").Select 
    Selection.Copy 
    Workbooks("Real Time Agent AHT And Login Tracker").Activate 
    Sheets("Raw_Data_Agent").Select 
    Range("B1").Select 
    ActiveSheet.paste 
    Sheets("Raw_Data_Agent").Visible = False 
    Workbooks("Raw_Data_Agent").Activate 
Application.DisplayAlerts = False 
    ActiveWorkbook.Close False 
    Sheets("AM And Process Wise").Select 
    Calculate 
    ActiveWorkbook.RefreshAll 
Application.ScreenUpdating = True 

End Sub 
+0

На какой строке этот скрипт прерывается? – Taosique

+0

Рабочие книги («Real_Time_Agent_AHT_And_Login_Tracker»). Активируйте – user3275237

+0

Рабочие книги («Real_Time_Agent_AHT_And_Login_Tracker»). Активируйте, строка здесь разрывается – user3275237

ответ

0

Я бы поставил свою ставку на одно из наименований листов, не будучи точным. ИЛИ перемещение фокуса в неправильную книгу. И, следовательно, вы должны избегать использования .Select/.ActivateINTERESTING READ

Ваш код может быть переписана в виде (UNTESTED)

Sub paste() 
    Dim thisWb As Workbook, thatWb As Workbook, AnotherWb as Workbook 
    Dim thisWs As Worksheet 
    Dim nCalc 

    On Error GoTo Whoa 

    With Application 
     .ScreenUpdating = False 
     nCalc = .Calculation 
     .Calculation = xlManual 
    End With 

    Set thisWb = ThisWorkbook 
    Set thisWs = thisWb.Sheets("Raw_Data_Agent") 
    Set AnotherWb = Workbooks("Real Time Agent AHT And Login Tracker") 

    MyPath = thisWb.Path 

    With thisWs 
     .Visible = True 
     .Columns("B:P").ClearContents 

     Set thatWb = Workbooks.Open(Filename:=MyPath & "\Raw_Data_Agent.xls") 

     thatWb.Columns("A:O").Copy AnotherWb.Sheets("Raw_Data_Agent").Range("B1") 

     .Visible = False 

     Application.DisplayAlerts = False 
     thatWb.Close False 
    End With 

    thisWb.Sheets("AM And Process Wise").Calculate 
    thisWb.RefreshAll 

LetsContinue: 
    With Application 
     .ScreenUpdating = True 
     .Calculation = nCalc 
     .DisplayAlerts = True 
    End With 

    Exit Sub 
Whoa: 
    MsgBox Err.Description 
    Resume LetsContinue 
End Sub 

Кроме того, когда вы работаете с событиями, всегда используйте обработку еще ошибку, если вы получите сообщение об ошибке , эти события не восстанавливаются по умолчанию.

+0

Спасибо за комментарий, однако, когда я пытаюсь запустить код за строкой, здесь проблема точно: Рабочие книги («Real_Time_Agent_AHT_And_Login_Tracker»). Активировать – user3275237

+0

У вас есть книга, открытая под этим именем? –

+0

Я просто внесла исправление в код, и если вы получили ошибку в строке 'Set AnotherWb = Workbooks (« Агент реального времени AHT и Login Tracker »), то это означает, что он не может найти книгу с этим именем. –

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