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