Vamos a hacer una introducción a las macros escribiendo código en VBA.
Hay dos conceptos previos a tener en cuenta.
Para escribir Macros debemos habilitar la pestaña Programador o Desarrollador, según la versión de Excel.
Para ello vamos a Archivo, Opciones, Personalizar cinta de opciones, y marcamos en Desarrollador
Así nos queda activa la pestaña Desarrollador
Y el documento hay que guardarlo como un libro de Excel habilitado para Macros
Una vez hecho estos paso vamos con nuestro supuesto.
Tenemos un libro Excel, con tres hojas con información de distintos ejercicios. Queremos poder indicar en la hoja inicial que Ejercicio debe visualizarse. Y si no ponemos ninguno, pues que se muestren todos
Este es un ejemplo Macro mostrar ocultar hojas
Para escribir una Macro debemos asociarla a un botón que la ejecute. Para ello en la pestaña desarrollador, pulsamos en Insertar y elegimos un Botón y lo dibujamos en la hoja Datos
Por ejemplo
Le damos un nombre a la Macro, por ejemplo MostrarOcultarHojas y pulsamos en Nuevo
Se nos muestra el editor de VBA de Excel con el nombre de la macro para que empecemos a escribir código.
Lo primero que haremos es hacer visibles las hojas, así si antes se han ocultado o no se ha indicado ningún valor las veremos todas
Para ello escribimos las siguientes instrucciones, puede usar copiar y pegar para repetirlo
Sheets(“2016”).Visible = True
Sheets(“2015”).Visible = True
Sheets(“2014”).Visible = True
Estamos diciendo, en la colección de hojas (Sheets), la hoja 2016, hazla visible. Y lo mismo para la hoja 2015 y 2014
A continuación pondremos el código para ocultar las que no correspondan
If Sheets(“Datos”).Range(“B3”) = 2016 Then
Sheets(“2015”).Visible = False
Sheets(“2014”).Visible = False
End If
Estamos diciendo Si en la hoja Datos, la celda B3 tiene el valor 2016, entonces
Oculta haz NO visible la hoja 2015 y también la hoja 2014
Lo mismo haremos con las otras hojas
If Sheets(“Datos”).Range(“B3”) = 2015 Then
Sheets(“2016”).Visible = False
Sheets(“2014”).Visible = False
End If
If Sheets(“Datos”).Range(“B3”) = 2014 Then
Sheets(“2016”).Visible = False
Sheets(“2015”).Visible = False
End If
Cerramos el editor de código y no ponemos ningún año y pulsamos Ejecutar. Se tienen que mostrar todos los años
Si ponemos 2015 y pulsamos ejecutar se mostrara solo la hoja de ese año
Y si pulsamos un año que no existe, se mostraran también todas las hojas
Vamos a revisar todo el código. Sobre el botón ejecutar, pulsamos con el ratón el botón de la derecha, elegimos asignar macro
Y pulsamos en Modificar. Nos tiene que salir todo este código
Sub MostrarOcultarHojas()
Sheets(“2016”).Visible = True
Sheets(“2015”).Visible = True
Sheets(“2014”).Visible = True
If Sheets(“Datos”).Range(“B3”) = 2016 Then
Sheets(“2015”).Visible = False
Sheets(“2014”).Visible = False
End If
If Sheets(“Datos”).Range(“B3”) = 2015 Then
Sheets(“2016”).Visible = False
Sheets(“2014”).Visible = False
End If
If Sheets(“Datos”).Range(“B3”) = 2014 Then
Sheets(“2016”).Visible = False
Sheets(“2015”).Visible = False
End If
End Sub
Aquí tienes el ejercicio Macro mostrar ocultar hojas
El macro no funciona cuando esta protegido la estructura del libro, en ese caso que haría
Debes introducir una instruccion de desbloqueo al inicio del codigo de la macro y otro de bloqueo al final de esta para que ABRA-EJECUTE- CIERRE
Una vez tuve ese mismo problema. Si buscas por la web lo encontrarás, yo no lo tengo en estos momentos si no te lo pegaría aqui.
Un saludo
El macro no funciona cuando esta protegido la estructura del libro, en ese caso que haría? O como seria el macro