下标超出范围(运行时错误9)

时间:2013-07-04 12:25:25

标签: vba excel-vba charts excel

我已经调整了一段代码,用于根据工作簿中可以着色的单元格为几个饼图(以及其中的切片)着色。

 Sub SetColorScheme(cht As Chart, i As Long)

    Dim y_off As Long, rngColors As Range
    Dim x As Long

    y_off = i Mod 10
    'this is the range of cells which has the colors you want to apply
    Set rngColors = ThisWorkbook.Sheets("colors").Range("A1:C1").Offset(y_off, 0)

    With cht.SeriesCollection(1)
        'loop though the points and apply the corresponding fill color from the cell
        For x = 1 To .Points.Count
            .Points(x).Format.Fill.ForeColor.RGB = _
                             rngColors.Cells(x).Interior.Color
        Next x
    End With

End Sub

问题是当我尝试编译片段时,我得到了错误下标超出范围(运行时错误9)。有人有什么建议会导致这种行为吗? 我总共有8个饼图,所以我也尝试输入i Mod 8而不是Mod 10这没有改变错误。连接中的错误是否是另一个子(生成饼图的那一块(因为这个子只是着色它们?)soembody可以提出任何建议吗?

2 个答案:

答案 0 :(得分:1)

  

下标超出范围(运行时错误9)

     

我应该提到错误是在行中设置rngColors = ThisWorkbook.Sheets(“colors”)。范围(“A1:C1”)。偏移量(y_off,0)你可以查看下面我的评论(答案)。我真的不知道是什么引起了这个错误 - Johannes Graulich 9小时前

我能想到的两个原因

  1. 您没有名称为“Colors”的工作表

  2. 如果您直观地看到名为“Colors”的工作表,请检查名称中是否有前导或尾随空格。您可以双击选项卡中的工作表名称,然后选中或者可以激活该工作表,然后使用

    Debug.print Len(Activesheet.Name)

  3. 在程序中或使用下面的立即窗口中检查

    ?Len(Activesheet.Name)
    

    如果你得到超过5,那就意味着你有一个前导空格或尾随空格。

答案 1 :(得分:0)

您的代码正在访问

rngColors.Cells(x)

其中x从1循环到系列中的点数。

您的范围只有y_off个单元格。

因此,如果任何系列的点数超过y_off,您将获得超出范围错误的下标。

取出调试器!