Изменить стиль шрифта в PivotField Excel VBA - PullRequest
1 голос
/ 13 января 2020

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

Код, который у меня есть, выглядит так с самого начала:

With ActiveSheet.PivotTables("Laddsida").PivotFields("Work hrs")
.Orientation = xlDataField
.Position = 6
.Function = xlSum
.NumberFormat = "[h]:mm:ss"
.Name = "Uppskattad arbetad tid"
End With

Пробовал с этим:

With ActiveSheet.PivotTables("Laddsida").PivotFields("Work hrs")
.Orientation = xlDataField
.Position = 6
.Function = xlSum
.NumberFormat = "[h]:mm:ss"
.font.Italic = True
.Name = "Uppskattad arbetad tid"
End With

Но получаю следующую ошибку:

Ошибка времени выполнения "438":

Объект не поддерживает это свойство или метод

После вашей помощи мне удалось продвинуться так далеко, но RowRange влияет только на первое, как на этом изображении

введите описание изображения здесь

1 Ответ

0 голосов
/ 13 января 2020

Согласно моему комментарию: .Font не является частью свойств, известных объектной модели PivotFields. Однако вы можете использовать PivotField.DataRange, который вернет объект Range, который в свою очередь поддерживает .Font; например:

Sub Test()

Dim ws as Worksheet: Set ws = ThisWorkbook.Worksheets("????") 'Name of your sheet
ws.PivotTables("Laddsida").PivotFields("Work hrs").DataRange.Font.Italic = True

End Sub

В соответствии с вашим комментарием, я думаю, у вас есть заголовки в строке, также называемые RowRange. Мы можем использовать этот объект Range, чтобы найти заданный вами c целевой заголовок:

Sub Test()

Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("????") 'Name of your sheet
Dim cl As Range

Set cl = ws.PivotTables("Laddsida").RowRange.Find("Work hrs")
If Not cl Is Nothing Then
    cl.Font.Italic = True
End If

End Sub

И, согласно вашему последнему комментарию, вы получили несколько заголовков с одинаковым значением, поэтому Вы можете использовать .FindNext:

Sub Test()

Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("????") 'Name of your sheet
Dim cl As Range, rw As Long

With ws.PivotTables("Laddsida").RowRange
    Set cl = .Find("Work hrs")
    If Not cl Is Nothing Then
        rw = cl.Row
        Do
            cl.Font.Italic = True
            Set cl = .FindNext(cl)
        If cl Is Nothing Then GoTo DoneFinding
        Loop While cl.Row <> rw
    End If
DoneFinding:
End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...