MOSTRAR/OCULTAR COLUMNAS EN VARIAS HOJAS DESDE UN CUADRO DE SELECCIÓN MULTIPLE
Hola, soy un nuevo suscriptor del foro (aunque asiduo vistante de la web) y necesito urgentemente que alguien me eche una mano.
Tengo un libro Excel que consta de varias hojas, entre ellas, las hojas PR, PD, CR y CD.
También tengo, en la Hoja1, un cuadro de selección múltiple de meses, desde enero a diciembre, para poder marcar los meses (uno o varios) de los que quiero ver la informacion contenida en esas hojas.
Las columnas de los meses de las hojas no son coincidentes, por lo que los rangos de las columnas correspondientes a enero son D:I (6 columnas en hoja PR), I:N (6 columnas en hoja PD), G:M (siete columnas en hoja CR) y G:M (siete columnas en hoja CD), las correspondientes a febrero son: J:O (6 columnas en hoja PR), O:T (6 columnas en hoja PD), N:T (siete columnas en hoja CR) y N:T (siete columnas en hoja CD), y así sucesivamente para todos los meses.
Lo que necesitos es una macro que muestre solo las columnas que corresponden a los meses elegidos en la lista de selección múltiple, en todas las hojas, ocultando todas las demás.
Entiendo que lo más lógico sería partir de todas las columnas ocultas, para mostrar solamente las que se seleccionen en la lista de selección múltiple, en vez de partir de todas las columnas visibles y ocultar las que no se seleccionan.
También supongo que será necesario crear una macro por hoja, ya que las columnas a seleccionar son distintas en cada caso. Y, además, está la cuestión de la lista de selección múltiple… En fin, soy incapaz de vincular esas instrucciones. En cualquier caso, creo que es una macro (o una macro de macros) demasiado compleja para mis escasos (escasísimos) conocimientos de VBA.
Podrías ayudarme?
No te hace falta una macro por hoja. Lo que sí es necesario es que la macro no esté en un módulo dependiente de una hoja (crea un módulo nuevo y pon ahí la macro).
Para recorrer las hojas puedes hacer lo siguiente:
Sheets("Hoja2").Select
Luego parte de toda la hoja oculta:
Cells.Select
Selection.EntireColumn.Hidden = True
Para finalmente activar la columna que te interese, en función del mes elegido:
Columns("I:I").Select
Selection.EntireColumn.Hidden = False
Un saludo