数据透视图:如果不激活图表,则无法移动标题

时间:2013-06-06 22:34:57

标签: excel vba excel-vba

我正在Excel 2010中编写一个小宏来移动数据透视表的图表标题,我可以使用激活图表并选择图表标题的方法使其工作。这是代码

Private Sub Worksheet_Calculate()

    'On Error GoTo GetOut
    Application.ScreenUpdating = False
    Application.EnableEvents = False

    ActiveSheet.ChartObjects("Chart 1").Activate
    If ActiveChart.HasTitle = True Then
    ActiveChart.ChartTitle.Select
            With Selection
                .Left = 311.982
                .Top = 9.559
            End With
    End If

GetOut:
    ActiveSheet.Range("M21").Select
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub

但我想避免激活该对象,所以我写了这个

Private Sub Worksheet_Calculate()

Dim empChart As ChartObject

'On Error GoTo GetOut
Application.ScreenUpdating = False
Application.EnableEvents = False

Set empChart = ActiveSheet.ChartObjects("Chart 1")
If empChart.HasTitle = True Then
    With empChart.ChartTitle
        .Left = 311.982
        .Top = 9.559
    End With
End If

GetOut:
ActiveSheet.Range("M21").Select
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

但这给了我运行时错误438:Object不支持此属性或方法。我无法弄清楚为什么我的生活。我不是很好,所以它可能是愚蠢的,但任何帮助都会非常感激

1 个答案:

答案 0 :(得分:3)

工作表ChartObject有一个子Chart对象:您可以使用(例如)

直接访问它
Dim cht As Chart
Set cht = ActiveSheet.ChartObjects("Chart 1").Chart 

然后您可以直接操作cht,而不是使用ActiveChart。