VBA代码只应用最后一个数据标签

我不会说英语,但我希望你能理解我。

这是关于绘制图的VBA代码。 我正试图自动化我的工作表,并在互联网上find了一个简单易用的代码。 在更新系列之后,我的意图是清除除最后一个之外的所有数据标签。

代码是:

Dim oChart As ChartObject Dim MySeries As Series For Each oChart In ActiveSheet.ChartObjects For Each MySeries In oChart.Chart.SeriesCollection 'Clear Existing Data Labels MySeries.ApplyDataLabels (xlDataLabelsShowNone) 'Apply Labels to Last Point MySeries.points(MySeries.points.Count).ApplyDataLabels Next MySeries Next oChart End Sub 

但是,这个代码只能在十个图中的三个中运行,而对其他代码则不起作用。 我已经查找了系列之间的相似之处(比如名字的格式或者graphics的types,栏,饼),但是我找不到问题

macros的第一部分是删除所有的数据标签正常工作的所有图表,虽然。 我也尝试做多个工作表和工作簿,也不成功。

你应该在每一张纸,每张图,每一个系列和一些点上面。 ApplyDataLabels是一个属性,不是一个点或多个点。 xlDataLabelsShowNone并不意味着没有一点。 这意味着标签不会以任何格式显示。 你可以在这里阅读这个对象。

下面的代码将为你做的工作。

 Sub remove_label() Dim wsh As Worksheet Dim oChart As ChartObject Dim MySeries As Series Dim oPoints As Points Dim MyPoint As Point Dim i As Long For Each wsh In ThisWorkbook.Worksheets For Each oChart In wsh.ChartObjects For Each MySeries In oChart.Chart.SeriesCollection Set oPoints = MySeries.Points i = oPoints.Count For Each MyPoint In oPoints i = i - 1 If i <> 0 Then 'Clear Existing Data Labels MyPoint.ApplyDataLabels xlDataLabelsShowNone Else 'Apply Labels to Last Point MyPoint.ApplyDataLabels xlDataLabelsShowValue End If Next MyPoint Next MySeries Next oChart Next wsh End Sub