VBA添加图表标题

时间:2015-04-13 23:00:10

标签: excel vba excel-vba charts

我只想使用vba为图表添加图表标题。我实际上想要为每张表中的每个图表递归执行,但我甚至无法获得1个图表。这是我的代码:

Dim chnam
chnam = Left(ActiveSheet.Name, (Len(ActiveSheet.Name) - 9))
With ActiveWorkbook.ActiveSheet.ActiveChart
    .HasTitle = True
    .ChartTitle = chnam
End With

这是我的图表:

enter image description here

当我运行我的代码时,我得到:

Object does not support this property or method

6 个答案:

答案 0 :(得分:4)

试试这个:

Dim chnam as string
chnam = Left(ActiveSheet.Name, (Len(ActiveSheet.Name) - 9))
With ActiveWorkbook.ActiveSheet.ActiveChart
    .HasTitle = True
    .ChartTitle.Select
    .ChartTitle.Text = chnam
End With

答案 1 :(得分:0)

尝试将代码更改为:

Dim chnam As String

chnam = Left(ActiveSheet.Name, (Len(ActiveSheet.Name) - 9))

With ActiveWorkbook.ActiveChart
    .HasTitle = True
    .ChartTitle.Select
    .ChartTitle.Text = chnam
End With

...这将适用于活动图表,然后添加For Each ...如果要应用于activeworkbook中所有工作表中的所有图表。

答案 2 :(得分:0)

我遇到了同样的问题但找不到答案 - 但找到了有效的方法。我的意思是,我不知道它为什么会起作用,但确实如此。

试试这个 - 为我工作。:

With ActiveWorkbook.ActiveChart
.HasTitle = False // added line - not sure why it works!
.HasTitle = True
.ChartTitle.Text = "Chart Title"
End With

希望有所帮助。

答案 3 :(得分:0)

以上在Office 2016中失败了。我不得不使用Worksheet.Shapes对象。

Debug.Assert ActiveWorkbook.Charts.Count = 0 ' Strange, but true
ActiveSheet.Shapes(1).Chart.ChartTitle.Text = chnam

以下子程序适用于我。

' Set title of chart with given name on given worksheet
Private Sub RetitleChart(sheetExport As Worksheet, strChartName As String, strChartTitle As String)
  Dim chartOverview As Chart

  Set chartOverview = sheetExport.Shapes(strChartName).Chart
  chartOverview.ChartTitle.Text = strChartTitle
  Set chartOverview = Nothing
End Sub

答案 4 :(得分:0)

设置图表标题文本的另一种方法是使用ChartWizard方法,因此:

Dim chnam as string
chnam = Left(ActiveSheet.Name, (Len(ActiveSheet.Name) - 9))
ActiveWorkbook.ActiveSheet.ActiveChart.ChartWizard Title:=chnam

值得熟悉此方法的文档:

https://msdn.microsoft.com/en-us/library/office/ff838804.aspx

和图表本身:

https://msdn.microsoft.com/en-us/library/office/ff837379.aspx

(其中包含ChartTitle对象文档的链接。)

答案 5 :(得分:0)

我遇到了同样的问题-在我的当前计算机Excel 2017上,而6个月前还没有出现过;有代码

pchrTheChart.HasTitle = True
pchrTheChart.ChartTitle.Select

第二行会出错;如果我插入了一个断点,然后继续进行而没有任何变化,那就很好了。

但是,上述解决方案的变体起作用了;即使图表是刚刚创建的,开始时都没有标题,但我必须在打开标题之前明确关闭标题,现在每次都可以正常使用。

pchrTheChart.HasTitle = False
pchrTheChart.HasTitle = True
pchrTheChart.ChartTitle.Select

原始发帖人说,他们不知道它为什么起作用;回答,对我来说,我们似乎正在解决VBA错误,我认为这与null处理有关。