参数无效 - VBA图表颜色

时间:2017-04-18 03:13:20

标签: excel excel-vba excel-2010 vba

最近,我根据3个关键条件自动着色了一系列图表。如果它们是“已计划”,“强制”或“其他” - 图表颜色将自动化而不是手动过程。但是,最近它已停止工作,即使我的代码没有变化。

我查看了我的代码,它突出了我的一个模块,下面的代码就是罪魁祸首。

ElseIf InStr(outRng.Offset(tabRowloop, 5 + ((tabcolloop - 1) * 5)), "Planned") > 0 Then                    
    serobj.Points(tabRowloop + 1).Format.Fill.ForeColor.RGB = RGB(30, 65, 100)

如果我注释掉这一行,代码会运行,但着色不起作用。循环函数很好,但我无法理解我的点的颜色如何导致“无效参数”错误。

是否有人能够就原因提供任何指导?

'Code for Recolor Chart Module
Dim tabRowloop As Integer
Dim tabcolloop As Integer
Dim seriesnum As Integer
Dim serobj As Series

For tabcolloop = 1 To maxGanttBarsPerSite Step 1

    seriesnum = stupidRangeIndexThingy(tabcolloop)
    Set serobj = chobj.Chart.FullSeriesCollection(seriesnum)
    serobj.Format.Fill.ForeColor.RGB = RGB(50, 50, 50)

    tabRowloop = 0
    Do While Len(outRng.Offset(tabRowloop, 1))
        If (Len(outRng.Offset(tabRowloop, 1 + ((tabcolloop - 1) * 5))) > 0) Then
            Debug.Print tabRowloop & "," & tabcolloop
            If InStr(outRng.Offset(tabRowloop, 5 + ((tabcolloop - 1) * 5)), "Forced") > 0 Then
                serobj.Points(tabRowloop + 1).Format.Fill.ForeColor.RGB = RGB(192, 0, 0)
            ElseIf InStr(outRng.Offset(tabRowloop, 5 + ((tabcolloop - 1) * 5)), "Planned") > 0 Then
               serobj.Points(tabRowloop + 1).Format.Fill.ForeColor.RGB = RGB(30, 65, 100)
                'problem is with the above line
            Else
                serobj.Points(tabRowloop + 1).Format.Fill.ForeColor.RGB = RGB(247, 150, 70)
            End If
        End If
        tabRowloop = tabRowloop + 1
    Loop
Next

'Sort table - Synergy first then by name
Call SortFinalTable(numUnitsFound)

'Turn on calc and redraw
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub

1 个答案:

答案 0 :(得分:0)

如果Points对象的索引超出范围,您将收到无效参数错误。如果tabRowLoop仍然等于0时第一个循环失败,则表明serobj没有任何意义。如果它在以后的循环中失败,那是因为你超过了系列中的点数。当单步执行代码时,在设置了serobj变量之后,尝试通过运行一些debug / immediate命令来确认已经拾取了哪个系列。

print serobj.Points.Count