select交替点并在上方/下方移动标签

我对VBA相当陌生,试图select交替点来放置上面和下面的数据标签。

这是我的代码,目前正在放置一个数据标签下面我想要的点1,但是我希望第三点的标签也放在下面,以及其他的上面。 我已经尝试了许多不同的循环和代码,但似乎没有任何工作,我不知道为什么它似乎复制和粘贴,而不是移动标签。

For x = 1 To ActiveChart.SeriesCollection(1).Points.Count With ActiveChart.SeriesCollection(1).Points(x).DataLabel .Position = xlLabelPositionBelow .Orientation = xlHorizontal End With x = x + 2 Next x For x = 2 To ActiveChart.SeriesCollection(1).Points.Count With ActiveChart.SeriesCollection(1).Points(x).DataLabel .Position = xlLabelPositionAbove .Orientation = xlHorizontal End With x = x + 2 Next x 

这是我的代码目前产生的: 在这里输入图像说明

这是我想要做的事情: 在这里输入图像描述

如果这是可能的,我觉得这是简单的,我很想念。 所以任何帮助将不胜感激。 有没有可能有一个更简单的方法? 先谢谢你。

问题似乎是,你是“过度迭代”x。 如果你想让x增加2,你实际上是在说“x = x + 2”,然后是“+ 1 x”(这就是Next)。 你可以通过改变For循环来expression“For x = 1 to 3 Step 2”来解决上述问题。 然后当你用“下一个x”循环时,它会加2而不是1。

不过,我build议你做下面的事情,因为它是(在我看来)更清楚一点,你想要的东西,甚至是X,和一些奇怪的X:

  For x = 1 To ActiveChart.SeriesCollection(1).Points.Count With ActiveChart.SeriesCollection(1).Points(x).DataLabel If x Mod 2 = 1 Then 'If x is odd, put label below point .Position = xlLabelPositionBelow .Orientation = xlHorizontal Else 'if x is even, put label above point .Position = xlLabelPositionAbove .Orientation = xlHorizontal End If End With Next x 
 ActiveChart.SeriesCollection(1).Points(1).DataLabel.Position = xlLabelPositionBelow ActiveChart.SeriesCollection(1).Points(2).DataLabel.Position = xlLabelPositionAbove ActiveChart.SeriesCollection(1).Points(3).DataLabel.Position = xlLabelPositionBelow For x = 4 to ActiveChart.SeriesCollection(1).Points.Count ActiveChart.SeriesCollection(1).Points(x).DataLabel.Position = xlLabelPositionAbove Next