Ocultar y mostrar hojas con vba en excel Escucha este post

0 comentarios

Hola se que había prometido una solución al problema de subir varias imagenes en un documento de excel pero la verdad que no lo he podido resolver .La verdad que la semana fue interesante ya que aprendí como se usa vba. Ya sbia algo de basic pero no como funcionaba este script.Pero les tengo un tema que podría ayudar al momento de hacer formularios en excel.


Esto es ocultar hojas de excel para evitar su modificación o para que el usuario los llene en un orden especifico.
la propiedad es muy sencilla

Sheets("nombre de la hoja")).Visible = True

Pero la gracia no es esa si no controlar las hojas
para eso yo use hice un metodo para ocultar las hojas menos la actual

Public Sub ocultarTodoMenosEste()
'oculta todas las ojas menos la actual
hojaActual = ActiveSheet.Name
Set wsHoja = Worksheets
i = 0
For Each wsHoja In ActiveWorkbook.Worksheets
' guardamos un array con todos los nombres de las hojas para poder viajar entre ellas
nombreHojas(i) = wsHoja.Name
i = i + 1
If wsHoja.Visible = True And wsHoja.Name <> hojaActual Then
wsHoja.Visible = False
End If
Next wsHoja
End Sub

Lo que hace es muy simple
pone en una variable el nombre de la hoja actual luego
recorre todas las hojas de un libro por un for each
si son visibles o no tienen el nombre de la hoja actal
las cambia a invisibles .Visible = False


ahora para que el usuario pueda ver las hojas que tienen que estar al principio del documento y las que no al final

con un Sub auto_Open()
pueden controlar que se oculte desde el principio
ademas de ocultar menus que el usuario podria usar para modificar celdas

Sub auto_Open()
' funcion de inicio de rutina
'oculta la cinta de opciones y la barra deformulas
'seleciona la hoja caratula y oculta todas menos la selecionada
Application.ScreenUpdating = False
Sheets("caratula").Visible = True
Sheets("caratula").Select
numeroHojaActual = 0
Application.DisplayFullScreen = True
Application.DisplayFormulaBar = False
ActiveWindow.DisplayHeadings = False
ActiveWindow.DisplayGridlines = False
' llamamos al sub antes descrito
ocultarTodoMenosEste
Application.ScreenUpdating = True
End Sub
ahora para avanzar entre las hojas

necesitamos saber el nombre de cada una y en cual se encuentra
ara esto hacemos un array
Public nombreHojas(12) As String
Public numeroHojaActual



nombreHojas lo llenamos al ocultar las hojas
si se dan cuenta
y numeroHojaActual lo hacemos igual a cero cuando empezamos todo
todo esta en losprocedimientos anteriores
les adjunto un documento para que lo revisen aqui y aqui


espero esto les sirva