2013-08-30 5 views
0

настоящее время у меня следующий код, чтобы установить диапазон от моей сводной таблицы (набор данных для регионального дохода):VBA Set Range с пустой Pivot Пункт

Set RngE1 = PT.PivotFields("Region").PivotItems("Europe").LabelRange 
Set RngE2 = Intersect(PT.PivotFields("Region").PivotItems("Europe").DataRange.EntireRow, PT.PivotFields("Income").DataRange) 
Set RngEurope = Union(RngE1, RngE2) 

Однако это ежемесячный отчет и в определенные месяцы для Европы не будет дохода. Таким образом, я столкнулся с ошибкой, когда макрос не может получить LabelRange класса PivotItem. Есть ли какой-нибудь код, который я могу использовать, который пропустит этот шаг, если LabelRange не найден, а не сломает макрос?

Thanks

ответ

0

Его противение, но как насчет ошибки?

Dim bTest as Boolean 
bTest = False 

' ---------- 
On Error Resume Next 
Set RngE1 = PT.PivotFields("Region").PivotItems("Europe").LabelRange 
If Err Then bTest = True 
On Error Goto 0 

If bTest Then 
    'Handle here 
Else 
    'All good 
End If 
+0

Нужно ли это делать для каждой линии, содержащей «Европа», @DenzilNewman? У меня довольно много таких строк! Что делает '0' в строке 'On Error Goto 0'? –

+0

Извините, что не отвечал раньше, возможно, теперь вам не поможет. on error resume next игнорирует ошибки по ошибке goto 0 возобновляет нормальную обработку ошибок - я знаю, что это не то, на что похоже –