Matriz multidimensional VBA (matrices 2D)

Este tutorial discutirá matrices bidimensionales y multidimensionales en VBA.

Matriz multidimensional (matrices 2D)

Las matrices multidimensionales son matrices que contienen más de una dimensión, generalmente dos o tres dimensiones, pero las matrices pueden tener hasta 32 dimensiones.

Declarar una matriz 2D

Para crear una matriz con más de una dimensión, use comas para definir cada dimensión por separado:

1 Dim intArr (2,3) como entero

Poblando una matriz 2D

El siguiente código llenará una matriz 2D y luego completará las filas y columnas de una hoja de trabajo con los valores de la matriz.

1234567891011121314151617181920212223242526 Subpoblar2D ()'declarar la matriz 2DDim intA (2, 3) como entero'declarar variablesDim rw como enteroDim col como entero'poblar la matrizintA (0, 0) = 45intA (0, 1) = 50intA (0, 2) = 55intA (0, 3) = 60intA (1, 0) = 65intA (1, 1) = 70intA (1, 2) = 75intA (1, 3) = 80intA (2, 0) = 85intA (2, 1) = 90intA (2, 2) = 95intA (2, 3) = 100'recorrer la matriz y completar ExcelPara rw = 0 a 2Para col = 0 a 3Celdas (rw + 1, col + 1) .Value = intA (rw, col)Siguiente columnaSiguiente rwEnd Sub

Su hoja de cálculo de Excel debe completarse de la siguiente manera.

Rellenar una matriz 2D a partir de datos de Excel

El siguiente código completará una matriz 2D de una hoja de cálculo de Excel y luego completará una hoja diferente con los datos.

1234567891011121314151617181920212223242526 Subpoblar2D ()'Declare las hojas de trabajoDim ws_Source como hoja de trabajoDim ws_Destination As Worksheet'Declare la matrizDim wsData (10, 2) como variante'Declara las variablesDim rw como enteroDim col como entero'consulte la hoja de origenEstablecer ws_Source = Hojas de trabajo ("Hoja1")'obtener la información de la hoja de origen y completar la matrizPara rw = LBound (wsData, 1) a UBound (wsData, 1)Para col = LBound (wsData, 2) a UBound (wsData, 2)wsData (rw, col) = ws_Source.Range ("A2"). Offset (rw, col) .ValueSiguiente columnaSiguiente rw'consulte la hoja de destinoEstablecer ws_Destination = Hojas de trabajo ("Hoja2")'rellenar la hoja de destino de la matrizPara rw = LBound (wsData, 1) a UBound (wsData, 1)Para col = LBound (wsData, 2) a UBound (wsData, 2)ws_Destination.Range ("A1"). Offset (rw, col) .Value = wsData (rw, col)Siguiente columnaSiguiente rwEnd Sub

Cambiar el tamaño usando ReDim y Re-Dim Preserve

Puede cambiar el tamaño de una matriz usando ReDim.

1234567891011121314151617 Sub Resize2D ()'declarar la matrizDim varArray () como variante'declarar el tamaño de la matrizReDim varArray (1, 2)varArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "Contador"varArray (1, 1) = "Secretario"varArray (1, 2) = "Doctor"'redeclara el tamaño de la matrizReDim varArray (0, 1)'repoblar la matrizvarArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"End Sub

Cuando vuelva a declarar la matriz, perderá todos los datos que se tenían previamente en la matriz a menos que utilice la Declaración de ReDim Preserve.

12345678910111213141516 Sub Resize2D ()'declarar la matriz Dim varArray () como Variante'declarar el tamaño de la matrizReDim varArray (1, 2)varArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "Contador"varArray (1, 1) = "Secretario"varArray (1, 2) = "Doctor"'redeclara el tamaño de la matrizReDim Preverve varArray (1, 3)'rellenar la matriz con valores adicionalesvarArray (0, 3) = "Rob Barnes"varArray (1, 3) = "Plomero"End Sub

Solo puede cambiar el tamaño de la última dimensión de una matriz si desea mantener los datos originales en la matriz con Re-Dim Preserve.

Al hacer clic en depurar, el error se resaltará y mostrará que la primera dimensión de la matriz no es la misma que la primera dimensión cuando se declaró originalmente el tamaño de la matriz.

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave