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



我正在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:对象不支持这个属性或方法。我怎么也想不明白为什么。我不是很好,所以它可能是愚蠢的,但任何帮助将非常感激

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

Dim cht As Chart
Set cht = ActiveSheet.ChartObjects("Chart 1").Chart 

那么你可以直接在cht上操作,而不是使用ActiveChart

最新更新