除了道歉,我的问题变得非常好奇,我找不到任何答案。
我的程序的一部分旨在搜索图形以查看系列是否已经存在,如果不存在,则会创建它。截至目前,该计划很好,花花公子。但是,对于8个不同的图表,代码不仅很长,而且可能效率更低。所以,我决定尝试循环一个数组。这就是其中一个图形块的样子:
编辑:我没有特别说,但是Z是一个工作表的名称和系列的名称,如前面代码中所定义的那样,所以这不是问题。Sheets("A").Select
Count = ActiveChart.SeriesCollection.Count
Fail = 0
For c = 1 To Count
If ActiveChart.SeriesCollection(c).Name = Z Then
With ActiveChart.SeriesCollection(c)
.Values = Worksheets(Z).Range("AJ5:AJ45")
.XValues = Worksheets(Z).Range("AP5:AP45")
End With
Exit For
Fail = Fail - 1
End If
Fail = Fail + 1
Next c
If Fail = Count Then
ActiveChart.SeriesCollection.NewSeries
c = ActiveChart.SeriesCollection.Count
With ActiveChart.SeriesCollection(c)
.Values = Worksheets(Z).Range("AJ5:AJ45")
.XValues = Worksheets(Z).Range("AP5:AP45")
.Name = Z
.MarkerStyle = 1
.MarkerSize = 9
End With
End If
(还有7个以下,有不同的纸张和Y值)。所以,我试过这个:
Dim SheetArr(0 To 7) As Sheets
Set SheetArr(0) = Sheets("A")
Set SheetArr(1) = Sheets("B")
等。
Dim RangeArr(0 To 7) As Range
Set RangeArr(0) = Range("AJ5:AJ45")
Set RangeArr(1) = Range("AK5:AK45")
等。
开始循环,分别用SheetArr(i)和RangeArr(i)替换单个值,因此只存在一个代码块,但是没有一个图形甚至开始绘制。 我调整阵列是否错误,或者这是不可能的?
(很抱歉超级长的帖子,只是想尽可能清楚。)
答案 0 :(得分:1)
您可以创建包含工作表名称的字符串数组,而不是尝试创建工作表数组。
Dim SheetNames(0 To 7) As String
SheetNames(0) = "A"
SheetNames(1) = "B"
...
然后像这样使用它
For IntSheet = 0 To 7
ThisWorkbook.Sheets(SheetNames(IntSheet)).Select
...
Next
关于范围的地址评论:
我逐步完成了以下代码,测试了范围分配并选择了适当的范围
Dim RangeArr(0 To 7) As Range
Set RangeArr(0) = Range("AJ5:AJ45")
Set RangeArr(1) = Range("AK5:AK45")
RangeArr(0).Select 'Selects AJ5:AJ45
RangeArr(1).Select 'Selects AK5:AK45