2015-03-25 3 views
0

У меня есть макрос MS Excel, который создает несколько сводных таблиц. Проблема в том, что если значение, которое я фильтрация больше не существует, генерируется ошибка, и макрос останавливается (остальные Сводные таблицы не создаются). Нарушитель линия:Как продолжить макрос после возникновения ошибки

ActiveSheet.PivotTables("PivotTable2").PivotFields("Test Cycle").CurrentPage = _ 
    "SIT Cycle 2" 

Если «SIT Cycle 2» не содержит ошибок сегодня, то он не будет в исходных данных и выдается ошибка в макросе. Вместо этого я хотел бы напечатать «Нил» на активном листе и продолжить. В итоге макрос создаст около десяти отдельных сводных таблиц.

макросъемки является:

' 
' Cycle_2_Severity_by_Status Macro 
' 

' 
    Sheets.Add 
    ActiveSheet.Name = "Cycle 2 Severity by Status" 
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 
     "Table_owssvr__1", Version:=xlPivotTableVersion15).CreatePivotTable _ 
     TableDestination:="'Cycle 2 Severity by Status'!R3C1", TableName:="PivotTable2", DefaultVersion _ 
     :=xlPivotTableVersion15 
    Sheets("Cycle 2 Severity by Status").Select 
    Cells(3, 1).Select 
    With ActiveSheet.PivotTables("PivotTable2").PivotFields("Status") 
     .Orientation = xlRowField 
     .Position = 1 
    End With 
    With ActiveSheet.PivotTables("PivotTable2").PivotFields("Severity") 
     .Orientation = xlColumnField 
     .Position = 1 
    End With 
    ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables(_ 
     "PivotTable2").PivotFields("SIR ID"), "Count of SIR ID", xlCount 
    With ActiveSheet.PivotTables("PivotTable2").PivotFields("Test Cycle") 
     .Orientation = xlPageField 
     .Position = 1 
    End With 
    ActiveSheet.PivotTables("PivotTable2").PivotFields("Test Cycle"). _ 
     ClearAllFilters 
    ActiveSheet.PivotTables("PivotTable2").PivotFields("Test Cycle").CurrentPage = _ 
     "SIT Cycle 2" 
    Sheets("owssvr (1)").Select 
    Range("A2").Select 
' 
' SIT_CR_Severity_by_Status Macro 
' 

' 
    Sheets.Add 
    ActiveSheet.Name = "SIT CR Severity by Status" 
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 
     "Table_owssvr__1", Version:=xlPivotTableVersion15).CreatePivotTable _ 
     TableDestination:="'SIT CR Severity by Status'!R3C1", TableName:="PivotTable2", DefaultVersion _ 
     :=xlPivotTableVersion15 
    Sheets("SIT CR Severity by Status").Select 
    Cells(3, 1).Select 
    With ActiveSheet.PivotTables("PivotTable2").PivotFields("Status") 
     .Orientation = xlRowField 
     .Position = 1 
    End With 
    With ActiveSheet.PivotTables("PivotTable2").PivotFields("Severity") 
     .Orientation = xlColumnField 
     .Position = 1 
    End With 
    ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables(_ 
     "PivotTable2").PivotFields("SIR ID"), "Count of SIR ID", xlCount 
    With ActiveSheet.PivotTables("PivotTable2").PivotFields("Test Cycle") 
     .Orientation = xlPageField 
     .Position = 1 
    End With 
    ActiveSheet.PivotTables("PivotTable2").PivotFields("Test Cycle"). _ 
     ClearAllFilters 
    ActiveSheet.PivotTables("PivotTable2").PivotFields("Test Cycle").CurrentPage = _ 
     "SIT CR" 
    Sheets("owssvr (1)").Select 
    Range("A2").Select 
+2

Знаете ли вы о [Об ошибке] (https://msdn.microsoft.com/en-us/library/5hsw66as.aspx). – pnuts

+1

В приведенном выше коде отсутствует обработка ошибок. Вы можете использовать 'code' On Error Resume Next, чтобы определить, что должно произойти при возникновении ошибок. Кроме того, вы можете проверить с помощью обычного, если еще не указано. Например, если len (ошибка) <0, тогда «сделайте то, что вы хотите еще», отобразите ошибку msg .. –

ответ

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