У меня есть макрос 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
Знаете ли вы о [Об ошибке] (https://msdn.microsoft.com/en-us/library/5hsw66as.aspx). – pnuts
В приведенном выше коде отсутствует обработка ошибок. Вы можете использовать 'code' On Error Resume Next, чтобы определить, что должно произойти при возникновении ошибок. Кроме того, вы можете проверить с помощью обычного, если еще не указано. Например, если len (ошибка) <0, тогда «сделайте то, что вы хотите еще», отобразите ошибку msg .. –