首页 文章

设置图表 Headers 仅适用于Excel 2016中的调试

提问于
浏览
0

问题可以总结如下:
enter image description here
只有在我运行代码时才会出现此问题,而不是在我单步执行 chrt.HasTitle -line时 . 在这种情况下,它正确创建一个 Headers ,我可以编辑它,但我想要 .


我先给出相关的源代码 . 这仅包括区分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.现在它突然拒绝启用 Headers ,除非我单步执行当然不是预期用途的代码 .

任何人都知道这是什么以及可能的解决方案? 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会自动启用 Headers . 在此脚本中,添加了多个系列,只要添加第二组数据, Headers 就会再次自动删除 . 然后它将不再再启用它 .

1 回答

  • 0

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

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

    解决了这个问题 .

    这个答案一点也不令人满意......

相关问题