En el post de hoy hablaremos de cómo conseguir una matriz dinámica empleando la sentencia ReDim Preserve.
Todo nace por la cuestión planteada por un lector para imprimir las hojas impares de nuestro libro de trabajo.
Lo interesante del código en cuestión es que nos permite ir redimensionando el tamaño de nuestra matriz de trabajo según vamos recorriendo las diferentes hojas del libro (cuando cumplan la condición dada), esto lo conseguimos con la sentencio REDIM; y por otro lado la instrucción PRESERVE permite almacenar o retener los elementos guardados con anterioridad!!.
La macro que veremos a continuación realiza un proceso mediante el cual carga los nombres de las hojsa impares en una matriz-array dinámica, para terminar seleccionando los elementos de dicha array y lanzarlos a la vista preliminar.
Nuestra macro añadida dentro de un módulo estándar de nuestro proyecto de VB:
Tras ejecutar la macro, el resultado es el esperado....
Todo nace por la cuestión planteada por un lector para imprimir las hojas impares de nuestro libro de trabajo.
Lo interesante del código en cuestión es que nos permite ir redimensionando el tamaño de nuestra matriz de trabajo según vamos recorriendo las diferentes hojas del libro (cuando cumplan la condición dada), esto lo conseguimos con la sentencio REDIM; y por otro lado la instrucción PRESERVE permite almacenar o retener los elementos guardados con anterioridad!!.
La macro que veremos a continuación realiza un proceso mediante el cual carga los nombres de las hojsa impares en una matriz-array dinámica, para terminar seleccionando los elementos de dicha array y lanzarlos a la vista preliminar.
Nuestra macro añadida dentro de un módulo estándar de nuestro proyecto de VB:
Sub imprimir_hojas() Dim hoja As Integer Dim sel() As String 'definimos nuestra Array x = 1 For hoja = 1 To Sheets.Count 'condición que limita a las hojas impares If (hoja Mod 2) <> 0 Then 'cambiamos la dimensión de la array 'manteniendo los datos cargados ReDim Preserve sel(1 To x) As String 'añadimos nuevo elemento a la matriz sel(x) = Sheets(hoja).Name 'y terminamos aumentando el número de elementos... x = x + 1 End If Next hoja 'mandamos las hojas impares a vista preliminar Sheets(sel).PrintPreview End Sub
Tras ejecutar la macro, el resultado es el esperado....
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.