我正在尝试为该系列中的每个其他点移动标签,从1点开始,低于该点,并且每个其他点的标签从该点上方的2开始。有没有办法跳过'比如使用常规" for..next"环?如果我执行if的第一部分,它适用于所有点,但我不确定如何只执行其他每一点。
Sub MoveLabels()
Dim objPt As Point
For Each objPt In ActiveChart.SeriesCollection(1).Points
objPt.DataLabel.Position = xlLabelPositionBelow
objPt.DataLabel.HorizontalAlignment = xlCenter
objPt.DataLabel.VerticalAlignment = xlTop
objPt.DataLabel.Orientation = xlHorizontal
Next
End Sub
答案 0 :(得分:2)
这就是我的想法:
Sub MoveLabels()
Dim objPt As Point
Dim LabelPosition as xlDataLabelPosition
LabelPosition = xlLabelPositionBelow ' Initialize
For Each objPt In ActiveChart.SeriesCollection(1).Points
objPt.DataLabel.Position = LabelPosition
objPt.DataLabel.HorizontalAlignment = xlCenter
objPt.DataLabel.VerticalAlignment = xlTop
objPt.DataLabel.Orientation = xlHorizontal
' Toggle label position
LabelPosition = Iif(LabelPosition = xlLabelPositionBelow, xlLabelPositionAbove, xlLabelPositionBelow)
Next
End Sub
或者您可以使用FOR I = 1到.... Points.Count并根据I MOD 2设置位置