我不会说英语,但我希望你能理解我。
它是关于用于绘制图形的VBA代码。我正在尝试自动化我的工作表,我在互联网上找到了一个简单易用的代码。更新系列后,我的目的是清除除最后一个之外的所有数据标签。
代码是:
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
但是,此代码仅针对十个图中的三个运行,而不适用于其他图。我已经找到了系列之间的相似之处或不同之处(比如名称格式或图形的类型 - 线条,条形图,饼图),但我找不到问题
宏的第一部分是删除所有数据标签,但所有图表都能正常工作。我也尝试为多张工作表和工作簿执行此操作,但也未成功。
答案 0 :(得分:0)
你应该超过每张纸,每张图表,每个系列和点。 ApplyDataLabels
是一个属性,不是一个点或多个点。 xlDataLabelsShowNone
并不代表任何一点。这意味着标签不会以任何格式显示。您可以阅读此对象here。
下面的代码可以帮到你。
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