Как я могу перебирать элементы полей сводной таблицы OLAP?

#excel #vba

Вопрос:

Вот мой код, я пытаюсь увидеть, есть ли «ИДЕНТИФИКАТОР» в сводном поле «ПОЛИТИКА», прежде чем я попытаюсь вставить его, и произойдет ошибка. Мне повезло с использованием .Метод PivotItems с обычными сводными таблицами, но, похоже, не может заставить его работать для моей сводной таблицы OLAP. Прямо сейчас флаг не срабатывает в значение True, когда идентификатор находится в сводном поле ПОЛИТИКИ. На самом деле, когда я зацикливаюсь таким образом, я не могу заставить что-либо произойти в цикле, даже MsgBox. Как будто он думает, что набор пуст.

 upbound = Attributes.Range(Console.Range("E4").Value).Rows.Count J = 0 K = 0 L = 0 N = 0 O = 0  For I = 1 To upbound  ID = Attributes.Range("A4").Offset(I, 0).Value  flag = False  flag2 = False    For Each pivot_item In pt.PivotFields("[ADMI LIFE70].[POLICY].[POLICY]").PivotItems:  If pivot_item.Name = ID Then  flag = True  End If  Next pivot_item    For Each pivot_item In pt2.PivotFields("ENTITY_ID").PivotItems:  If pivot_item.Name = ID Then  flag2 = True  End If  Next pivot_item    If flag = True Then  If flag2 = True Then  Sheets("Policy_Loan Pivot").Select  ActiveSheet.PivotTables("1").PivotFields("ENTITY_ID").ClearAllFilters  ActiveSheet.PivotTables("1").PivotFields("ENTITY_ID").CurrentPage = ID  Sheets("Loans_Trans Pivot").Select  ActiveSheet.PivotTables("1").PivotFields("[ADMI LIFE70].[POLICY].[POLICY]"). _  ClearAllFilters  ActiveSheet.PivotTables("1").PivotFields("[ADMI LIFE70].[POLICY].[POLICY]"). _  CurrentPageName = "[ADMI LIFE70].[POLICY].amp;[amp;IDamp;]"  Calculate    M = 12  Console.Range("B3").Value = WorksheetFunction.Sum(Calc.Range("AN" amp; M))  If Console.Range("B3").Value lt;gt; 0 Then  Do While Console.Range("B3").Value lt;gt; 0  M = M   1  Console.Range("B3").Value = WorksheetFunction.Sum(Calc.Range("AN" amp; M))  Loop  M = M - 1  Calc.Range("A12:" amp; "AY" amp; M).Copy  Output.Range("A3").Offset(L, 0).PasteSpecial xlPasteValues  L = L   Calc.Range("A12:" amp; "AY" amp; M).Rows.Count  Console.Range("I4").Offset(N, 0).Value = ID  N = N   1  Else  Console.Range("H4").Offset(K, 0).Value = ID  K = K   1  End If  Else  Console.Range("G4").Offset(O, 0).Value = ID  O = O   1  End If  Else  Console.Range("F4").Offset(J, 0).Value = ID  J = J   1  End If Next I   

Любая другая помощь с этим плохим написанным кодом также была бы отличной.

Комментарии:

1. Пожалуйста, предоставьте сообщение об ошибке, чтобы другие могли лучше понять проблему.