Excel图表VBA循环遍历数据标签
我有很多工作表,每个工作表上都有一个图,我想在每个图中遍历每个datalabel,删除任何等于0的数据,但似乎无法提取datalabel值Excel图表VBA循环遍历数据标签,vba,excel,excel-2010,excel-charts,Vba,Excel,Excel 2010,Excel Charts,我有很多工作表,每个工作表上都有一个图,我想在每个图中遍历每个datalabel,删除任何等于0的数据,但似乎无法提取datalabel值 With ActiveChart For k = 1 To .SeriesCollection.Count For j = 1 To .SeriesCollection(k).Points.Count For l = 1 To .SeriesCollection(k).Points(j).DataLabels.
With ActiveChart
For k = 1 To .SeriesCollection.Count
For j = 1 To .SeriesCollection(k).Points.Count
For l = 1 To .SeriesCollection(k).Points(j).DataLabels.Count
If .SeriesCollection.Points(j).DataLabels(l) = 0 Then
.SeriesCollection.Points(j).DataLabel(l).Delete
End If
Next l
Next j
Next k
End With
(忽略通过激活每个图形的每个工作表的循环,该位起作用,因此代码示例保持最少)
有人能建议如何循环数据标签、检查值并在适当的地方删除吗?您已经接近了
您只错过了检查数据标签内文本值的.Caption
我将DataLabels(l)
更改为DataLabels.Item(l)
(您的代码中存在不一致性)
OP使用的最终代码:
无法使用.Item(l)”,但是
.Caption`是使其工作的关键,而且每个点
只有一个数据标签
,因此能够删除其中一个循环,谢谢。@TimWilkinson:Thx,谢谢您的返回,你能建议用你的工作代码对我的答案进行编辑吗?@TimWilkinson:我批准了你的编辑,包括你的最终代码!;)
With ActiveChart
For k = 1 To .SeriesCollection.Count
For j = 1 To .SeriesCollection(k).Points.Count
For l = 1 To .SeriesCollection(k).Points(j).DataLabels.Count
If .SeriesCollection.Points(j).DataLabels.Item(l).Caption = 0 Then
.SeriesCollection.Points(j).DataLabels.Item(l).Delete
End If
Next l
Next j
Next k
End With
With ActiveChart
For k = 1 To .SeriesCollection.Count
For j = 1 To .SeriesCollection(k).Points.Count
If .SeriesCollection(k).Points(j).DataLabel.Caption = 0 Then
.SeriesCollection(k).Points(j).DataLabel.Delete
End If
Next j
Next k
End With