Excel VBA图表,仅在最后一点显示数据标签

标签 excel vba label

我只想将数据标签添加到我的折线图上的最后一点,目前我正在使用下面的,它工作正常,但前提是我知道最后一点是什么数字。
我做了很多搜索并在 excel 帮助中找到了 points(points.count) 对象,但我似乎无法让它对我有用。
请您建议一种仅在我的图表上显示最后一点或(理想情况下)在工作表上显示所有图表的方法。

Sub Data_Labels()
'
' Data_Labels Macro

    ActiveSheet.ChartObjects("Menck Chart").Activate
    ActiveChart.SeriesCollection(1).DataLabels.Select
    Selection.Delete
    ActiveSheet.ChartObjects("Menck Chart").Activate
    ActiveChart.SeriesCollection(1).Select
    ActiveChart.SeriesCollection(1).Points(59).Select
    ActiveChart.SeriesCollection(1).Points(59).ApplyDataLabels
    ActiveChart.SeriesCollection(1).DataLabels.Select
    Selection.Format.TextFrame2.TextRange.Font.Size = 9


End Sub

最佳答案

简短回答

 Dim NumPoints as Long
 NumPoints = ActiveChart.SeriesCollection(1).Count
 ActiveChart.SeriesCollection(1).Points(NumPoints).ApplyDataLabels

长答案

使用ActiveChart是模糊的,需要额外的步骤来选择感兴趣的图表。如果您明确指定您感兴趣的图表,您的宏将更加健壮且更易于阅读。我还建议使用 With block ,或创建中间变量,因为读取 ActiveChart.SeriesCollection(1).Points一遍又一遍是痛苦的,并且会使您的代码困惑。尝试后一种方法如下:
 Dim chartMenck As Chart, menckPoints as Points, menckDataLabel as DataLabel
 Set chartMenck = Sheet1.ChartObjects("Menck Chart").Chart 
 Set menckPoints  = chartMenck SeriesCollection(1).Points
 menckPoints(menckPoints.Count).ApplyDataLabels
 Set menckDataLabel = menckPoints(menckPoints.Count).DataLabel
 menckDataLabel.Font.Size = 9

在我看来,这几乎是原版的一半,而且更容易阅读。

关于Excel VBA图表,仅在最后一点显示数据标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23632152/

相关文章:

javascript。具有生成 ID 的元素标签

excel - 在Excel中基于另一个填充单元格

vba - 清空修改单元格同一行中的特定单元格

excel - 在excel中对表格中的行进行排序

javascript - 使用 VBA 显示 javascript 警报

excel - VBA DateAdd 未按预期工作

excel - 如果与另一个范围相交,则停止触发事件 SelectionChange(已使用相交)

excel - 使用变量作为应用程序名称

r - 更改条形图 R 中标签子集的颜色

python GTK3限制标签宽度