Hmmm ... la sintaxis es legal suficiente sin tener VBA delante de mí. ¿Tengo razón en que tu problema es que tu código "compila" y se ejecuta sin generar un error, pero que la matriz en la colección nunca cambia? Si es así, creo que es porque su A.Item (1) podría estar devolviendo una copia de la matriz que almacenó en la colección. A continuación, accedes y modificas el elemento elegido muy bien, pero no está teniendo el efecto que deseas porque es la instancia de matriz incorrecta.
En general, las colecciones VBA funcionan mejor cuando se almacenan objetos. Entonces funcionarán como quieras porque almacenan referencias. Están bien para almacenar valores, pero creo que siempre los copian, incluso los "grandes" como las variantes de matriz, lo que significa que no se puede mutar el contenido de una matriz almacenada.
Considera esta respuesta solo como una especulación hasta que alguien que conozca el material COM subyacente pesa mejor. ¿Um ... buscando a Joel Spolsky?
EDITAR: Después de probar esto en Excel VBA, creo que estoy en lo cierto. Poner una variante de matriz en una colección hace una copia, y también sale una. Por lo tanto, no parece haber una forma directa de codificar lo que realmente ha pedido.
Parece que lo que realmente quiere es una matriz 3-D, pero el hecho de que estaba escribiendo para usar una colección para la primera dimensión implica que desea poder cambiar su tamaño en esa dimensión. VBA solo le permitirá cambiar el tamaño de la última dimensión de una matriz (consulte "redim preserve" en la ayuda). Usted puede poner sus matrices 2-D dentro de una matriz 1-D que puede cambiar el tamaño de, sin embargo:
ReDim a(5)
Dim b(2, 2)
a(2) = b
a(2)(1, 1) = 42
ReDim Preserve a(6)
Tenga en cuenta que una se declara con ReDim, se atenúa en este caso.
Finalmente, es bastante posible que algún otro enfoque sea lo que sea que intentes hacer sería mejor. Las matrices en 3-D creíbles y mutables son complejas y propensas a errores, por decir lo menos.
No creo que el Arr2 (1, 1) = 11 realmente cambie la matriz de la colección. Vea mi respuesta editada, pero parece que VBA hace una copia de la matriz al agregar y leer desde la colección. – jtolle
Tal vez me deje engañar por tu comentario? Esa línea altera Arr2, pero no la matriz almacenada en la colección. Lo veo cambiando Arr2, pero no A.Item (1), que es solo una copia de Arr2 hecha por A.Add (Arr2). – jtolle
@jtolle: disculpas, acabo de volver a verificar y tienes toda la razón. Actualizaré el código de arriba. Es una copia de Arr2 en la colección. –