繁体   English   中英

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

[英]Subscript out of range (run time error 9)

我已经改编了一段代码,该代码旨在根据可以着色的工作簿中的单元为几个饼图(以及其中的切片)着色。

 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,这并没有改变错误。 连接中的错误是另一个子控件(生成饼图的部件(因为该子控件仅为它们着色)吗?有人可以提出建议吗?

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

我应该提到错误在Set rngColors = ThisWorkbook.Sheets(“ colors”)。Range(“ A1:C1”)。Offset(y_off,0)行中,您可以看看我在下面的评论(对答案) )。 我真的不知道是什么导致了该错误–约翰内斯·格劳利希9小时前

我能想到的两个原因

  1. 您没有名为“颜色”的工作表

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

    Debug.print Len(Activesheet.Name)

在过程中或使用“立即”窗口中的以下内容进行检查

?Len(Activesheet.Name)

如果您获得大于5的分数,则意味着您拥有前导或尾随的空间。

您的代码正在访问

rngColors.Cells(x)

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

您的范围只有y_off单元格。

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

释放调试器!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM