0

问题可以这样总结:在此处输入图像描述 这个问题只有在我运行代码时才会出现,而不是在我单步执行chrt.HasTitle-line 时出现。在这种情况下,它会正确创建一个标题,我可以随意编辑它。


我先给出相关的源代码。这仅包括区分 Excel 2003 与较新版本的代码(因为 Excel 2003 在“较新”代码上崩溃,反之亦然)。

Sub EnableChartTitle(chrt As Chart)
    If Application.Version = "11.0" Then
        EnableChartTitle_2003 chrt
    Else
        EnableChartTitle_Post2003 chrt
    End If
End Sub

Sub EnableChartTitle_2003(chrt As Chart)
    chrt.HasTitle = True
End Sub

Sub EnableChartTitle_Post2003(chrt As Chart)
    chrt.SetElement msoElementChartTitleAboveChart
End Sub

使用chrt.SetElement以前绕过了这个确切的问题,但现在它似乎又回到了 Office 2016。使用旧的chrt.HasTitle结果与 2016 相同的问题。

在 Office 2016 之前,此代码适用于所有版本的 Office。现在它突然拒绝启用标题,除非我逐步执行代码,这当然不是预期用途。

任何人都知道这是怎么回事以及可能的解决方法?VBA 真的让我对这种东西很紧张,而且谷歌也很难。这是我从中获得先前解决方案的地方。


这是创建图表的代码:

Dim chrt As Chart
RI.rSheet.Activate
Set chrt = Charts.Add.Location(xlLocationAsObject, RI.rSheet.Name)

然后设置它的位置,删除任何自动添加的系列并使用添加新数据chrt.SeriesCollection.Add <range>

注意:完全相同的代码在另一个脚本中工作。这是因为这里只添加了一个系列。设置系列名称时,Excel 会自动启用标题。在这个脚本中,添加了多个系列,并且一旦添加了第二组数据,标题就会再次自动删除。然后它将不再启用它。

4

1 回答 1

0

我找到了答案。在他听之前,你必须两次告诉 VBA 他必须做什么。将代码简单地更改为

Sub EnableChartTitle_Post2003(chrt As Chart)
    chrt.SetElement msoElementChartTitleAboveChart
    chrt.SetElement msoElementChartTitleAboveChart
End Sub

解决了这个问题。

这个答案完全不能令人满意……

于 2017-04-12T10:45:07.963 回答