问题可归纳为:
只有在我运行代码时才会出现此问题,而不是在我单步执行chrt.HasTitle
行时。在这种情况下,它正确创建了一个标题,我可以根据需要进行编辑。
我先给出相关的源代码。这仅包括区分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,直到Office 2016.现在它突然拒绝启用标题,除非我单步执行当然不是预期用途的代码。
任何人都知道这是什么以及可能的解决办法? VBA真的让我对这种东西感到紧张,谷歌也很难。 This is where I got the previous solution from.
以下是创建图表的代码:
Dim chrt As Chart
RI.rSheet.Activate
Set chrt = Charts.Add.Location(xlLocationAsObject, RI.rSheet.Name)
然后设置其位置,删除自动添加的所有系列,并使用chrt.SeriesCollection.Add <range>
添加新数据。
注意:完全相同的代码在另一个脚本中有效。这是因为这里只添加了一个系列。设置系列名称时,Excel会自动启用标题。在此脚本中,添加了多个系列,只要添加第二组数据,标题就会再次自动删除。然后它再也不能再启用它了。
答案 0 :(得分:0)
我找到了答案。在听之前,你必须告诉VBA两次他必须做的事情。将代码简单地改为
Sub EnableChartTitle_Post2003(chrt As Chart)
chrt.SetElement msoElementChartTitleAboveChart
chrt.SetElement msoElementChartTitleAboveChart
End Sub
修复了问题。
这个答案一点也不令人满意......