选择备用点并在

时间:2015-08-06 13:51:20

标签: excel excel-vba vba

我对VBA很新,并试图选择交替点来放置数据标签的上方和下方。

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

     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

这是我的代码目前产生的: enter image description here

以下是我希望它做的事情: enter image description here

如果可能的话,我觉得这很简单。所以任何帮助将不胜感激。有可能有一种更简单的方法吗? 提前谢谢。

2 个答案:

答案 0 :(得分:2)

问题似乎是你过度迭代' X。你希望x增加两倍,你实际上在说#34; x = x + 2"那么也说" + 1 x" (这是Next做的)。您可以通过更改For循环来解决此问题,并说出#34;对于x = 1到3步骤2"。然后当你使用" Next x"时,它将添加2而不是1。

但是,我建议你像下面这样做,因为它(在我看来)更清楚一点,你想要一个偶数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

答案 1 :(得分:1)

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