martes, 7 de noviembre de 2017

VBA: Una macro para imprimir las hojas impares

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:

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