从另一个子调用方法时出现无效参数错误

Invalid parameter error when method is called from another sub

我有下面的代码,可以从一些工作表创建图表并将图表放在它们自己的工作表中。当我 运行 宏本身时,它可以完美运行。当我从另一个宏使用 Call InsertDNCCharts 时,我在 With tl 块内的 .Period = 7 上收到 "Invalid Parameter" 错误。为什么会有差异?如果代码 运行 本身不应该 运行 从另一个子调用时以相同的方式吗?

Sub InsertDNCCharts()

Dim ws As Worksheet
Dim cws As Worksheet
Dim country As String
Dim lastrow As Long
Dim chrt As Shape
Dim chrtname As String
Dim xvalues As Range
Dim yvalues As Range
Dim tl As Trendline

For Each ws In ThisWorkbook.Worksheets

    If Right(ws.Name, 6) = "_Chart" Then
        country = Left(ws.Name, Len(ws.Name) - 6)
        Set cws = ThisWorkbook.Worksheets(country)

        lastrow = cws.Cells(Rows.count, "c").End(xlUp).Row
        Set xvalues = cws.Range("c5:c" & lastrow)
        Set yvalues = cws.Range("l5:l" & lastrow)

        cws.Activate
        Application.Union(xvalues, yvalues).Select
        Set chrt = cws.Shapes.AddChart2(201, xlColumnClustered, Cells(5, 2).Left, Cells(5, 2).Top, 1000, 420)

        chrt.Name = ws.Name
        chrtname = chrt.Name
        cws.Cells(5, 1).Select

        With chrt.Chart
            .Location Where:=xlLocationAsObject, Name:=ws.Name
            .Axes(xlCategory).HasMajorGridlines = True
            .Axes(xlCategory).HasMinorGridlines = False
            .Axes(xlValue).HasMajorGridlines = True
            .Axes(xlValue).HasMinorGridlines = False
            .HasLegend = False
        End With

        ws.ChartObjects(chrtname).Activate
        ActiveChart.ChartWizard Title:=country & " Daily New Cases (DNC)"

        Set tl = ws.ChartObjects(chrtname).Chart.SeriesCollection(1).Trendlines.Add

        With tl
            .Type = xlMovingAvg
            .Period = 7                '*******Error on this line. Debug says period=2, which is the default moving average period.
            .DisplayEquation = False
            .DisplayRSquared = False
            .Format.Line.DashStyle = msoLineSysDot
            .Format.Line.Weight = 3.5
            .Format.Line.ForeColor.RGB = RGB(255, 0, 0)
            .Format.Line.Style = msoLineSingle
        End With
    End If
Next ws
End Sub

如果讨论中的图表(创建的图表)至少有 7 个点,则可能是代码未引用适当的图表,或者图表未按需要创建。

为了检查这一点,我建议您在行 With tl 上放置一个断点并目视检查活动图表是否是您需要的图表以及它是否符合预期。看起来问题必须在引发错误的行之前。