
Por eso uso principalmente Java y C++ y VBA es muy nuevo para mí. Estoy muy confundido en cuanto a por qué sigo recibiendo el error 9: "Índice fuera de rango". Aquí está el código:
Dim count As Integer
Dim j As Integer
count = months.count
Dim monthsArr() As String
ReDim monthsArr(1, count)
For j = 1 To count
monthsArr(j) = months.Item(j)
Next j
El recuento es igual a 10 (lo verifiqué con un msgBox), por lo que meses es un ArrayList de longitud 10. Estoy tratando de poner los valores de los meses en una matriz para poder usar esa matriz en un filtro automático. Sigo recibiendo un error en esta línea:
monthsArr(j) = months.Item(j)
Pensé que VBA usaba indexación 1 para las colecciones, pero realmente no lo sé. ¿Alguien sabe por qué sigo recibiendo este error? Gracias
Respuesta1
Ha redimensionado monthsArr
para que sea una matriz de 2 dimensiones ReDim monthsArr(1, count)
. Si sigue siendo una matriz de 2 dimensiones, cuando le asigne elementos, también debe mostrar qué parte de la matriz está en ambas dimensiones. Sólo estás usando uno: monthsArr(j) = months.Item(j)
. Debería ser algo así como monthsArr(j,i) = months.Item(j)
¿dónde i
está la segunda dimensión de la matriz?
Además, tenga en cuenta que 0 es el primero en una matriz, no 1. Entonces, cuando declara monthsArr(1,count)
, significa que la primera dimensión tiene 2 elementos/elementos, mientras que la segunda dimensión tendrá recuento + 1 elementos.
Si no está destinado a ser una matriz de 2 dimensiones sino una matriz de 1 dimensión, entonces debe usar: ReDim monthsArr(count)
o ReDim monthsArr(count-1)
como base 0.