Excel VBA SeriesCollection_Runtime错误1004_parameter无效

问题描述

感谢@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 (将#修改为@)