Проблемы с выбором PivotItems в vba

У меня есть следующий код, который проходит через диапазон и форматирует некоторые PivotItems соответствии со значением диапазона. Код перескакивает с одного листа (с именем ученика и ответами) на другой (с помощью сводной таблицы с двумя RowLabels, QuestionNo и StudentName), и когда он находит правильный PivotItem, измените его формат.

 Sub Macro1() Dim student As String, q1 As String Dim pt as PivotTable Worksheets("SheetPivot").Activate Set pt = ActiveSheet.PivotTables(1) 'Jumps to the Sheet with the range to loop Worksheets("QuizState").Activate 'Goes to the first value Range("A1").Select 'Sarts the loop Do Until IsEmpty(ActiveCell.Value) 'Determines what type of value is. student = ActiveCell.Value q1 = ActiveCell.Offset(0,1).Value If q1 = "WRONG" then 'Jumps to Sheet with PivotTable Worksheets("SheetPivot").Activate pt.PivotFields("StudentName").PivotItems(student).LabelRange.Select Selection.Interior = 65535 'Yellow Worksheets("QuizState").Activate End If ActiveCell.Offset(1,0).Select Loop End Sub 

Теперь по какой-то причине он иногда работает, иногда он возвращает Run-time error '1004': Unable to get the PivotItems property of the PivotField Class которое, как мне кажется, связано с тем, что он не нашел элемент student , но он уверен, что он есть.

Может ли кто-нибудь помочь мне дебютировать код?

Может ли кто-нибудь помочь мне дебютировать код?

Я могу помочь вам отладить его, если вы можете загрузить образец рабочей книги на wikisend.com и поделиться ссылкой здесь?

который, я думаю, из-за того, что я не нашел предмет студента, но он уверен, что он есть.

Попробуй это

 student = Trim(ActiveCell.Value) 

Также вы можете переписать свой код без использования .Выберите и .Activate. Ваш код будет работать намного быстрее 🙂 Например ( НЕВЕРОЯТНЫЙ КОД НЕПРАВИЛЬНО )

 Sub Macro1() Dim student As String, q1 As String Dim pt As PivotTable Dim ws1 As Worksheet, ws2 As Worksheet Dim ws2LastRow As Long, i As Long Set ws1 = Worksheets("SheetPivot") Set pt = ws1.PivotTables(1) Set ws2 = Worksheets("QuizState") With ws2 ws2LastRow = .Range("A" & .Rows.Count).End(xlUp).Row For i = 1 To ws2LastRow 'Determines what type of value is. student = Trim(.Range("A" & i).Value) q1 = UCase(Trim(.Range("B" & i).Value)) If q1 = "WRONG" Then 'Jumps to Sheet with PivotTable pt.PivotFields("StudentName").PivotItems(student).LabelRange.Interior = 65535 'Yellow End If Next End With End Sub 
  • Вычисленные значения полей сводной таблицы неверны
  • Общая сводная таблица: общий процент от абсолютного значения?
  • Сводная диаграмма Grand Total в таблице, но не в графике
  • Таблица Excel 2016 - изменение источника данных, не корректирующее корректно
  • Структурная ссылка для таблиц столбцов таблицы таблиц Excel для имениного диапазона
  • Как заставить Excel никогда не изменять ширину столбца?
  • Есть ли способ получить количество экземпляров, где критерии выполняются в сводной таблице в Excel 2016
  • Ошибка фильтра таблицы макросов VBA
  • Игнорировать ряды 1-го уровня в таблицах сводных таблиц Excel
  • Получить процент от общего числа групп в сводной таблице
  • Сортировка таблиц сводных таблиц Excel по нескольким столбцам
  • Interesting Posts
    Давайте будем гением компьютера.