下标超出范围(错误 9)

只能在数组和集合的定义范围内访问数组元素和集合成员。 此错误的原因及解决方案如下:

  • 引用了不存在的数组元素。 下标可能大于或小于可能的下标范围,或者此时没有在应用程序中为数组分配维度。 检查数组声明,验证其上下限范围。 如果您正在使用被重新设置维度的数组,则使用 UBoundLBound 设置数组访问条件。 如果索引被指定为变量,请检查变量名称的拼写。

  • 您声明了数组,但没有指定元素数。 例如,以下代码将导致此错误:

      Dim MyArray() As Integer 
      MyArray(8) = 234 ' Causes Error 9. 
    

    Visual Basic 未隐式将未指定数组的维度范围设置为 0-10。 相反,您必须使用 DimReDim 显式指定数组中的元素数。

  • 引用了不存在的集合成员。 尝试使用 For Each...Next 构造而非指定索引元素。

  • 使用了下标的简写形式,这会隐式指定无效元素。 例如,将 ! 运算符用于集合时,! 隐式指定一个键。 例如, objectkeyname value 等效于 object item (keyname) . value。 在此情况下,如果 keyname 表示集合中的无效键,则会发生错误。 要修复此错误,可以对集合使用有效的键名称或索引。

有关其他信息,选择有问题的项并按 F1(在 Windows 中)或 HELP(在 Macintosh 上)。

注意

有兴趣开发跨多个平台扩展 Office 体验的解决方案吗? 查看新的 Office 外接程序模型。 与VSTO外接程序和解决方案相比,Office外接程序占用的空间较小,您可以使用几乎任何Web编程技术(例如HTML5,JavaScript,CSS3和XML)来构建它们。

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。