Table of contents
Collapse the table of content
Expand the table of content

Subscript out of range (Error 9)

office 365 dev account|Last Updated: 6/12/2017
1 Contributor

Elements of arrays and members ofcollections can only be accessed within their defined ranges. This error has the following causes and solutions:

  • You referenced a nonexistent array element. The subscript may be larger or smaller than the range of possible subscripts, or the array may not have dimensions assigned at this point in the application. Check the declaration of the array to verify its upper and lower bounds. Use the UBound and LBound functions to condition array accesses if you're working with arrays that are redimensioned. If the index is specified as avariable, check the spelling of the variable name.

  • You declared an array but didn't specify the number of elements. For example, the following code causes this error:

Dim MyArray() As Integer 
MyArray(8) = 234 ' Causes Error 9. 
Visual Basic doesn't implicitly dimension unspecified array ranges as 0 - 10. Instead, you must use  **Dim** or **ReDim** to specify explicitly the number of elements in an array.
  • You referenced a nonexistent collection member. Try using the For Each...Next construct instead of specifying index elements.

  • You used a shorthand form of subscript that implicitly specified an invalid element. For example, when you use the ! operator with a collection, the ! implicitly specifies a key. For example, object!keyname. value is equivalent to object. item (keyname). value. In this case, an error is generated if keyname represents an invalid key in the collection. To fix the error, use a valid key name or index for the collection.

For additional information, select the item in question and press F1 (in Windows) or HELP (on the Macintosh).

© 2018 Microsoft