2016-06-20 4 views
0

В excel vba я создаю сводную таблицу и хочу заполнить заголовок (первые две строки) и нижнюю строку (1 строку) синим цветом с белым шрифтом.Excel VBA Pivot Table Fill Header

Приведенный ниже код заполняет внутреннюю часть первой строки набора данных, а не заголовка.

With ActiveSheet.PivotTables(1).TableRange1 
.Cells.Borders.LineStyle = xlContinuous 
.Range("A3:I4").Interior.ColorIndex = 49 
.Range("A13:I13").Interior.ColorIndex = 49 
End With 

Есть ли способ динамически ссылаться на заголовок и последнюю строку сводной таблицы? Лучше было бы ссылаться на заголовок «сводной таблицы», чем на определенные диапазоны, если значения изменения отчета изменяются.

ответ

1

вы можете просто использовать это:

With ActiveSheet.PivotTables("PivotTable1") 
    Debug.Print "full headers at: " & Intersect(.Parent.Range(.TableRange1.Row & ":" & .DataBodyRange.Row - 1), .TableRange1).Address 
    Debug.Print "last row-range at: " & .TableRange1.Rows(1).Offset(.TableRange1.Rows.Count - 1).Address 
End With 

, но глядя на ваш подлодки, самый простой способ будет изменить:

.Range("A3:I4").Interior.ColorIndex = 49 
.Range("A13:I13").Interior.ColorIndex = 49 

к:

Union(.Rows("1:2"), .Rows(.Rows.Count)).Interior.ColorIndex = 49 
1

Существует динамический способ решения строки заголовка и последней строки:

Dim pvtFirstRow, pvtLastRow  As Integer 

pvtFirstRow = ActiveSheet.PivotTables(1).TableRange1.row + x ' modify x to the first row where your Pivot data starts 
pvtLastRow = ActiveSheet.PivotTables(1).TableRange1.Cells(ActiveSheet.PivotTables(1).TableRange1.Cells.count).row 
0

Код, представленный в потоке, до сих пор работает, но его необходимо будет повторно запустить в будущем: в любое время, когда количество строк или столбцов в своде изменяется, вы можете сидеть с цветными строками или столбцами, где нет поворот или цветные ячейки в неправильной части стержня.

Предлагаю вам взглянуть на встроенные сводные стили Excel, выбрать ближайший к тому, что вам нужно, и использовать такой код, чтобы изменить строки заголовков и общую итоговую строку. Нет необходимости манипулировать диапазонами ячеек, потому что в следующий раз вы можете отключить общую строку (ради аргумента), но диапазон будет по-прежнему окрашен.

Я записал макрос и удалил все избыточные строки кода, чтобы помочь вам увидеть, какие изменения. Я также удаляю одну полезную строку (.TintAndShade =) и заменяю ее выражением «ColorIndex =», чтобы заставить оттенок синего, который вам кажется предпочтительным.

После этого вы должны иметь тот же стиль, что и все остальные (существующие и новые) опорные точки в одной книге. Вы даже можете сделать это по умолчанию. Не нужно снова запускать код для форматирования, когда ваш свод [обновляется] охватывает другой диапазон ячеек.

Вы можете выбрать другой стиль один из собственной палитры и использовать свое собственное имя для копии, до тех пор, как вы найти и заменить все соответствующие строки в примере коде ниже или записывать свои собственные действия:

Sub ColourPivotStyleForThisBook() 

    'duplicate blue/medium pivot style from template 
    ActiveWorkbook.TableStyles("PivotStyleMedium2").Duplicate ("PivotStyleMedium2v2" _ 
     ) 
    With ActiveWorkbook.TableStyles("PivotStyleMedium2v2") 
     .ShowAsAvailablePivotTableStyle = True 
     .ShowAsAvailableTableStyle = False 
     .ShowAsAvailableSlicerStyle = False 
     .ShowAsAvailableTimelineStyle = False 
    End With 

    'now modify header's style (fill) (font colour is white/automatic already) 
    With ActiveWorkbook.TableStyles("PivotStyleMedium2v2").TableStyleElements(_ 
     xlHeaderRow).Interior 
     'only one/two lines are changing the colours 
'  .TintAndShade = -0.249977111117893 
     .ColorIndex = 49 
    End With 

    'now modify grand total row's style (fill) (font colour is white/automatic already) 
    With ActiveWorkbook.TableStyles("PivotStyleMedium2v2").TableStyleElements(_ 
     xlTotalRow).Interior 
     'only one/two lines are changing the colours 
'  .TintAndShade = -0.249946592608417 
     .ColorIndex = 49 
    End With 

End Sub 

Если результат не в том, что вам нужно, просто выберите часть стержня в книге, коснитесь вкладки «Дизайн» на ленте «Сводные инструменты», щелкните правой кнопкой мыши на том, который создал ваш код (он должен быть в раздел «Пользовательский» вверху) и нажмите «Удалить». Надеюсь это поможет.

(Вы можете даже использовать такой код выше, чтобы настроить сводные таблицы стилей в других книгах, которые не имеют PivotTables еще.)

+0

Встроенные в стиле я выбрал в моем исходном коде, уже использует белым, как цвет шрифта поэтому Я конкретно не адресую цвет шрифта в своем коде. В зависимости от стиля, с которого вы начинаете, вам может потребоваться добавить строку здесь и там, чтобы изменить цвет шрифта. – WdW