Excel VBA图表,只显示最后一点的数据标签
我想添加数据标签只有在我的线图上的最后一点,在我使用下面的时刻,这工作正常,但只有当我知道最后一点是什么数字。 我已经做了很多search,并发现在Excel中的points(points.count)对象的帮助,但我似乎无法使它为我工作。 请你可以build议一种方法,只显示我的图表上的最后一点或(理想情况下)工作表上的所有图表。
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
尝试这个。 首先它将数据标签应用到所有点,然后从除最后一个点以外的每个点中删除它们。
我使用Points.Count - 1
这样For/Next
循环在最后一个点之前停止。
Sub Data_Labels() ' Data_Labels Macro Dim ws As Worksheet Dim cht as Chart Dim srs as Series Dim pt as Point Dim p as Integer Set ws = ActiveSheet Set cht = ws.ChartObjects("Menck Chart") Set srs = cht.SeriesCollection(1) '## Turn on the data labels srs.ApplyDataLabels '## Iterate the points in this series For p = 1 to srs.Points.Count - 1 Set pt = srs.Points(p) '## remove the datalabel for this point p.Datalabel.Text = "" Next '## Format the last datalabel to font.size = 9 srs.Points(srs.Points.Count).DataLabel.Format.TextFrame2.TextRange.Font.Size = 9 End Sub
简答
Dim NumPoints as Long NumPoints = ActiveChart.SeriesCollection(1).Count ActiveChart.SeriesCollection(1).Points(NumPoints).ApplyDataLabels
长答案
ActiveChart
的使用是模糊的,并且需要额外的步骤来select感兴趣的图表。 如果您明确指定了您感兴趣的图表,那么您的macros将更健壮,更易于阅读。 我还build议使用With
块或创build中间variables,因为读取ActiveChart.SeriesCollection(1).Points
是ActiveChart.SeriesCollection(1).Points
很痛苦的ActiveChart.SeriesCollection(1).Points
,而且会让你的代码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
在我看来,这几乎是原来的一半,而且更容易阅读。