Excel VBA系列集合运行时错误1004\u参数无效
谢谢@Rory!我能够修复它,现在我有了一个新的错误 运行时错误1004/参数无效 at.SeriesCollection(j).XValues=ws.Range(rs) 谁能帮帮我吗 ''' 我正在尝试制作多张图表。每个图表都有20组不同的图例 我尝试的方法是首先按列制作多个图表,然后在代码中添加for/n循环(这里尝试每20行一组)Excel VBA系列集合运行时错误1004\u参数无效,excel,vba,excel-charts,Excel,Vba,Excel Charts,谢谢@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
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, i), 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, 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
With ch 'shape.chart'
.SetSourceData Union(rs, Range(Cells(2, i), 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
“”“发布大量代码并说它不起作用不是获得所需帮助的好方法。发布一篇文章并准确描述当前代码的问题。至少使用:
Union(rs,ws.Range(ws.Cells(2,i),ws.Cells(21,i))
以及:.SeriesCollection(j)。value=ws.Range(ws.Cells(k-18,i),ws.Cells(k+1,i))
你的括号放错了地方。很抱歉@SJR。我以前没有做过正确的编码,这是我在这个网站上的第一个问题。我将尝试Rory的评论并发布最小的可复制示例。谢谢!@Hi Rory!非常感谢!现在我在“SeriesCollection(j).XValues=ws.Range(rs)”上发现了一个错误'我用seriecollection(j)进行了更改。XValues=ws.Range(ws.Cells(2,19),ws.Cells(2,21))仍然有一个错误
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), Cells(21, 19))
ws.Shapes.AddChart2(240, xlXYScatterLines).Select
ws.Shapes(1).Chart.SetSourceData Union(rngTime, Range(Cells(2, 20), Cells(21, 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), Cells(21, 19))
ActiveChart.FullSeriesCollection(n).Values = ws.Range(Cells(m - 18, 20), Cells(m + 1, 20))
End With
Next n
End Sub