问题描述
感谢@Rory!我能够修复它,现在又得到了一个新的错误 运行时间错误1004 /参数无效 在at.SeriesCollection(j).XValues = ws.Range(rs)
有人可以帮我吗?
''' 我正在尝试制作多个图表。每个图表将有20个带有图例的不同组。
我尝试的方法是先按列制作多个图表,然后在我的代码中添加for / n循环(这里尝试每20行每组一个
Sub horizontal()
Dim sh As Shape
Dim ws As Worksheet
Dim ch As Chart
Dim rd As Range
Dim i As Integer,j As Integer,k As Integer
Set ws = Sheets("S1")
On Error Resume Next
ws.ChartObjects.Delete
On Error GoTo 0
For i = 20 To 45
Set rs = ws.Range("s2:s21")
Set rd = ws.Range("f1:j10")
Set sh = ws.Shapes.AddChart2(240,xlXYScatterLines)
Set ch = sh.Chart
For j = 1 To 20
k = j * 20
With ch 'shape.chart'
.SetSourceData Union(rs,ws.Range(ws.Cells(2,i),ws.Cells(21,i)))
.SeriesCollection.NewSeries
.SeriesCollection(j).XValues = ws.Range("s2:s21")
.SeriesCollection(j).Values = ws.Range(ws.Cells(k - 18,ws.Cells(k + 1,i))
.HasTitle = True
.ChartTitle.Text = ws.Range("T1")
.HasLegend = True
End With
Next j
With sh
.Name = "cht" & (i - 19)
.Top = (i - 20) * rd.Height
.Left = rd.Left
.Width = rd.Width
.Height = rd.Height
End With
Next i
End Sub
我尝试了以下两个代码,但是它们不起作用。
Sub horizontal()
Dim sh As Shape
Dim ws As Worksheet
Dim ch As Chart
Dim rd As Range
Dim i As Integer,xlXYScatterLines)
Set ch = sh.Chart
With ch 'shape.chart'
.SetSourceData Union(rs,Range(Cells(2,Cells(21,i)))
.HasTitle = True
.ChartTitle.Text = ws.Range("T1")
.HasLegend = True
End With
With sh
.Name = "cht" & (i - 19)
.Top = (i - 20) * rd.Height
.Left = rd.Left
.Width = rd.Width
.Height = rd.Height
End With
Next i
End Sub
Sub diameter()
Dim ws As Worksheet
Dim sh As Shape
Dim ch As Chart
Dim rng As Range,rngTime As Range
Dim n As Integer,m As Integer,k As Integer,i As Integer
Set ws = Sheets("S1")
'delete prevIoUs plots
If ws.ChartObjects.Count > 0 Then
ws.ChartObjects.Delete
End If
Set rngTime = ws.Range(Cells(2,19),19))
ws.Shapes.AddChart2(240,xlXYScatterLines).Select
ws.Shapes(1).Chart.SetSourceData Union(rngTime,20),20)))
'Source:=Range("'S1'!$S$2:$S$21,'S1'!$T$2:$T$21")
For n = 1 To 20
m = n * 20
With ActiveChart.SeriesCollection.NewSeries
ActiveChart.FullSeriesCollection(n).XValues = ws.Range(Cells(2,19))
ActiveChart.FullSeriesCollection(n).Values = ws.Range(Cells(m - 18,Cells(m + 1,20))
End With
Next n
End Sub
'''
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)