我正在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不支持此属性或方法。我无法弄清楚为什么我的生活。我不是很好,所以它可能是愚蠢的,但任何帮助都会非常感激
答案 0 :(得分:3)
工作表ChartObject
有一个子Chart
对象:您可以使用(例如)
Dim cht As Chart
Set cht = ActiveSheet.ChartObjects("Chart 1").Chart
然后您可以直接操作cht
,而不是使用ActiveChart。