我正在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