我试图写一些我认为很简单的代码。
我有多个图表,其中的布局必须根据用户输入进行更新(该系列的数据在另一个子目录中定义)。我已经定义了一些具有指定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
答案 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