Táboa de contidos
Unha matriz é unha variable que mantén os mesmos tipos de datos. Se só hai unha fila ou unha columna de datos, entón coñécese como matriz unidimensional. Non obstante, cando hai máis dunha fila e columna, chámase matriz 2D. Usamos ReDim para redimensionar unha matriz en VBA. Ademais, usamos a palabra clave Conservar con ReDim para manter os datos antigos intactos. Este artigo amosarache 2 formas rápidas de " ReDim Preserve " unha matriz 2D en Excel VBA .
Descargar Practice Workbook
Macro to ReDim Preserve 2D.xlsm
2 Prácticos enfoques para ReDim Preserve 2D Array en Excel VBA
Este é o conxunto de datos base creado a partir dunha Matriz 2D con tres filas e dúas columnas. En primeiro lugar, imos crear esta matriz. Despois, engadiremos outra columna a esta matriz. Usaremos o " ReDim Preserve " para facelo. Ademais, demostraremos o que ocorre se non usamos isto.
Por defecto, só podemos cambiar o tamaño da última dimensión da matriz (é dicir, as columnas ou o límite superior). Transpoñeremos a matriz, despois cambiaremos a última dimensión e, a continuación, traspoñeremos de novo para redimensionar as dúas dimensións da matriz 2D en Excel VBA.
1 ReDim Preserve Last Dimension 2D Array
Primeiro definiremos a Matriz 2D como dinámica. Despois, usando a instrución ReDim , crearemos unmatriz con tres filas e dúas columnas. Por último, usaremos de novo a instrución ReDim coa Conservar palabra clave para aumentar o límite superior da matriz bidimensional.
Pasos:
- Para comezar, prema ALT+F11 para abrir a xanela Módulo VBA . Alternativamente, pode facelo desde a pestana Desenvolvedor → seleccione Visual Basic .
- A continuación, desde a Inserir pestana → seleccione Módulo . Teclearemos aquí o código VBA.
- A continuación, escriba o seguinte código no Módulo xanela.
1130
Desglose do código VBA
- En primeiro lugar, chamamos o Sub procedemento “ Redim_Preserve_2D_Array_Row ”.
- A continuación, declaramos a variable Our_Array como unha matriz dinámica.
- A continuación, definimos o tamaño da matriz. O límite inferior é 3 , o límite superior é 2 e ambos comezan desde 1 .
- A continuación, asignamos valores á matriz .
- Despois diso, introducimos os valores no intervalo de celas C6:D8 .
- Despois diso, executará o código.
- Entón, Garde o módulo e prema Executar .
- Como resultado, devolverá os valores aos intervalos de celas definidos. Podemos ver que " Rachel " está na fila 1 e na columna 1 .que se definiu como ( 1,1 ) no código VBA.
- Agora, cambiaremos o tamaño da matriz.
- Entón, engade isto ao código anterior e elimina a primeira Instrucción Rango.Valor . Ademais, como se ve o código podes ver na instantánea que aparece a continuación.
4051
- Aquí aumentamos o límite superior de ( 1 A 2 ) a ( 1 A 3 ) por 1 .
- Entón, engadimos os valores á matriz.
- Agora, se executamos este código, veremos que non se conservan os valores anteriores. Volverá en branco para os valores anteriores.
- Agora, podemos corrixir isto engadindo a Conservar palabra clave no campo Declaración ReDim .
- Finalmente, o noso código completo será este.
3651
- Agora, se Executa este código, entón a saída será así. Así, " ReDim Preserve " a última dimensión dunha Matriz 2D en Excel VBA. Agora, o seguinte método mostrarache como " ReDim Preserve ” e cambie o tamaño das dúas dimensións da matriz.
Ler máis: VBA para ser único Valores da columna á matriz en Excel (3 criterios)
Lecturas similares
- Como nomear unha matriz de táboa en Excel (con Pasos sinxelos)
- Excel VBA para ler ficheiros CSV nunha matriz (4 exemplos ideais)
- Como converter o intervalo en matriz en ExcelVBA (3 vías)
- Excel VBA: eliminar duplicados dunha matriz (2 exemplos)
2. ReDim Conservar ambas dimensións en matriz 2D Excel VBA
Neste último método, mostrarémosche os pasos para cambiar o tamaño e " ReDim Preserve " da matriz 2D . Aquí, usaremos a función VBA Transpose para redimensionar o límite inferior da matriz. Se tentamos redimensionar o límite inferior da matriz no primeiro método, veremos o erro " Subíndice fóra do intervalo ". Agora, sen máis, vexamos como podemos solucionar isto e lograr o noso obxectivo.
Pasos:
- Primeiro, como se mostra no primeiro método , abra a xanela Módulo .
- En segundo lugar, engade as seguintes liñas de código ao primeiro código.
4305
- Ademais, o código do método final ten este aspecto.
4878
Desglose do código VBA
- En primeiro lugar, chamamos ao Sub procedemento " ReDim_Preserve_2D_Array_Both_Dimensions " .
- Entón, o resto dos códigos ata a función VBA Transpose son os mesmos que no primeiro código.
- Aquí, están a transpoñer a matriz.
- Entón, aumentamos o límite superior da matriz.
- Despois diso, transpoñemos a matriz de novo. Polo tanto, en última instancia, cambiará o límite inferior.
- A continuación, introducimos os valores para a matriz redimensionada mentresconservando os datos antigos.
- Por último, escribimos os valores no intervalo de celas C6:E9 .
- Despois que, como se mostra no primeiro método , Executar este código.
- Así, podemos visualizar como o código conserva un Matriz 2D usando a función “ ReDim Preserve ” e a función VBA Transpose .
Ler máis: VBA para transpoñer matriz en Excel (3 métodos)
Cousas para lembrar
- ReDim Preserve non pode cambiar o límite inferior da matriz. Para iso, necesitamos usar a función Transpose .
- Só podemos usar ReDim en matrices dinámicas.
Conclusión
Mostramosche dúas formas rápidas de " ReDim Preserve " unha 2D matriz en Excel VBA. Se tes algún problema con estes métodos ou tes algún comentario para min, non dubides en comentar a continuación. Ademais, podes visitar o noso sitio ExcelWIKI para obter máis artigos relacionados con Excel. Grazas por ler, segue destacando!