#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. Пожалуйста, предоставьте сообщение об ошибке, чтобы другие могли лучше понять проблему.