Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA系列集合运行时错误1004\u参数无效_Excel_Vba_Excel Charts - Fatal编程技术网

Excel VBA系列集合运行时错误1004\u参数无效

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

谢谢@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, 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