循环组合参考名称

时间:2019-05-02 16:19:20

标签: excel vba

我试图写一些我认为很简单的代码。

我有多个图表,其中的布局必须根据用户输入进行更新(该系列的数据在另一个子目录中定义)。我已经定义了一些具有指定RGB颜色的系列-分别称为“ Ser1”,“ Ser2”,“ Ser3”等。该子级应该遍历每个图表并更新分配给这些系列的颜色。 维度“ i”是要更新的系列数。为了简单起见,我只想将序列号“ i”与序列名称结合起来(即“ Ser” +“ i” =“ Ser1”)。我在下面写了我想做的事的典范。目前,该代码未正确引用该系列(即,它没有将“ Ser”与“ i”组合在一起以得出“ Ser1”,“ Ser2”等),我一直在寻找解决方案,但我一直没有能够找出在任何地方正确组合“ Ser”和“ i”的方法。

Sub ChartLayout_2()
With Sheets("Table")

Dim Ser1, Ser2, Ser3 As Long

Ser1 = RGB(0, 112, 192)
Ser2 = RGB(222, 28, 133)
Ser3 = RGB(136, 0, 56)

Set Cht = .ChartObjects("Chart 9").Chart
With Cht
For i = 1 To j
.SeriesCollection(i).Format.Fill.ForeColor.RGB = Ser & i
Next i
End With

Set Cht = .ChartObjects("Chart 10").Chart
With Cht
For i = 1 To j
.SeriesCollection(i).Format.Line.ForeColor.RGB = Ser & i
Next i
End With

End With
End Sub

1 个答案:

答案 0 :(得分:1)

您不能像这样构造变量名,而需要一个数组。

您在哪里定义j

Sub ChartLayout_2()

Dim Ser(1 To 3) As Long

With Sheets("Table")
    Ser(1) = RGB(0, 112, 192)
    Ser(2) = RGB(222, 28, 133)
    Ser(3) = RGB(136, 0, 56)

    Set Cht = .ChartObjects("Chart 9").Chart
    With Cht
        For i = 1 To j 'j must equal 3
            .SeriesCollection(i).Format.Fill.ForeColor.RGB = Ser(i)
        Next i
    End With

    Set Cht = .ChartObjects("Chart 10").Chart
    With Cht
        For i = 1 To j
            .SeriesCollection(i).Format.Line.ForeColor.RGB = Ser(i)
        Next i
    End With
End With

End Sub

Sub ChartLayout_2()

Dim Ser(1 To 3) As Long

With Sheets("Table")
    Ser(1) = RGB(0, 112, 192)
    Ser(2) = RGB(222, 28, 133)
    Ser(3) = RGB(136, 0, 56)

    For i = 1 To j 'j must equal 3
        .ChartObjects("Chart 9").Chart.SeriesCollection(i).Format.Fill.ForeColor.RGB = Ser(i)
        .ChartObjects("Chart 10").Chart.SeriesCollection(i).Format.Line.ForeColor.RGB = Ser(i)
    Next i
End With

End Sub