更改数据透视图的标题

时间:2018-12-27 22:05:51

标签: excel vba excel-vba pivot-table

我似乎无法弄清楚如何更改和显示数据透视图的标题。伪代码如下:

Dim PCache As PivotCache
Dim PTable As PivotTable
Dim PRange As Range
Dim PChart As ChartObject

lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 3

'Set data range
Set PRange = .Cells(1, 1).Resize(lastRow - 3, 11)

Set PCache = wb2.PivotCaches.Create _
    (SourceType:=xlDatabase, SourceData:=PRange)

Set PTable = PCache.CreatePivotTable(TableDestination:=.Cells(lastRow, 6), _
    TableName:="VarietyByTerritoryTable")

这一切都按预期进行。 lastRow变量很挑剔,但可以完成工作。这些全部放在With块中。在此之后,我有一些代码可以将字段添加到PTable中,但工作正常,因此我选择省略。现在,我创建图表。注意,实际上创建图表效果很好,我似乎无法显示标题。

Set PChart = wb2.Sheets(1).ChartObjects.Add(300, 200, 550, 200)
With PChart
    .Chart.SetSourceData PTable.TableRange2
    .Chart.ChartType = xlAreaStacked
    .Name = "Territory"
    .SetElement (msoElementChartTitleAboveChart)
    .ChartTitle.Text = strVar & " in " & strTerr
End With

错误显示在.SetElement()行中。几个问题:

a)有人知道如何解决此问题吗?我认为它应该相对简单,但是我花了最后几个小时在网上四处逛逛,却找不到很多:/

b).ChartObjects.Add(##, ##, ###, ##)中的数字是做什么的?他们改变了我假设的位置。最后两个是否处理图表的大小?

c)我可以使图表标题成为Set PTable = PCache.CreatePivotTable(TableDestination:=.Cells(lastRow, 6), _ TableName:="VarietyByTerritoryTable")位中TableName的名称吗?如果是这样,我可以在TableName部分中保留空格吗? (即更改为TableName := "Variety By Territory"

d)同样的问题,但带有PChart.Name。我可以以此作为标题吗?如果可以,应该避免空格吗?

谢谢大家!

1 个答案:

答案 0 :(得分:1)

  1. 您在.Chart行中缺少SetElement。所以试试这个:

    .Chart.SetElement (msoElementChartTitleAboveChart)
    .Chart.ChartTitle.Text = strVar & " in " & strTerr
    
  2. 对于ChartObjects Method,您是正确的,最后2个值是指宽度和高度。

  3. 您当然可以使图表名称与表名称相同,是的,数据透视表名称中允许使用空格。

  4. 与图表标题相同,空格可以。