设置图表标题仅在 Excel 2016 年调试时有效
Setting chart title only works while debugging in Excel 2016
问题可以概括为:
此问题仅在我 运行 代码时出现,而不是在我单步执行 chrt.HasTitle
行时出现。在这种情况下,它会正确创建一个标题,我可以根据需要对其进行编辑。
我先给出相关的源码。这仅包括区分 Excel 2003 和较新版本的代码(因为 Excel 2003 在 'newer' 代码上崩溃,反之亦然)。
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 真的让我对这类事情感到不安,而且 Google 也很难。 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)
然后设置其位置,移除任何 auto-added 的系列并使用 chrt.SeriesCollection.Add <range>
添加新数据。
注意:完全相同的代码在另一个脚本中确实有效。这是因为这里只添加了一个系列。设置系列名称时,Excel自动启用标题。在这个脚本中,添加了多个系列,一旦添加了第二组数据,标题就会再次自动删除。然后就不会再启用了。
我找到了答案。在他听之前,你必须告诉 VBA 两次他必须做的事情。将代码简单地更改为
Sub EnableChartTitle_Post2003(chrt As Chart)
chrt.SetElement msoElementChartTitleAboveChart
chrt.SetElement msoElementChartTitleAboveChart
End Sub
已解决问题。
这个回答一点都不令人满意...
问题可以概括为:chrt.HasTitle
行时出现。在这种情况下,它会正确创建一个标题,我可以根据需要对其进行编辑。
我先给出相关的源码。这仅包括区分 Excel 2003 和较新版本的代码(因为 Excel 2003 在 'newer' 代码上崩溃,反之亦然)。
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 真的让我对这类事情感到不安,而且 Google 也很难。 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)
然后设置其位置,移除任何 auto-added 的系列并使用 chrt.SeriesCollection.Add <range>
添加新数据。
注意:完全相同的代码在另一个脚本中确实有效。这是因为这里只添加了一个系列。设置系列名称时,Excel自动启用标题。在这个脚本中,添加了多个系列,一旦添加了第二组数据,标题就会再次自动删除。然后就不会再启用了。
我找到了答案。在他听之前,你必须告诉 VBA 两次他必须做的事情。将代码简单地更改为
Sub EnableChartTitle_Post2003(chrt As Chart)
chrt.SetElement msoElementChartTitleAboveChart
chrt.SetElement msoElementChartTitleAboveChart
End Sub
已解决问题。
这个回答一点都不令人满意...