Mostrar hojas de un libro de excel de acuerdo a un rango determinado

Necesito su apoyo para realizar una macro en el que me muestre solamente las hojas que necesito ver ( tener en cuenta que estas dependen de una lista variable, Ejm hoja1 a la hoja10 o hoja 13 etc..)

El rango de la lista la e llamado "ListaReportes" y es variable ( ya la tengo en modo dinamica con desref y contara)

1 Respuesta

Respuesta

No entiendo bien la pregunta, ¿se supone tienes una lista de las hojas que tiene tu libro? ¿O son las que quieres ver? ¿Ocultar? Imagino la hoja1 es donde esta la lista, así que mira.

Step1: genere UserForm1 con 5 botones y un RefEdit
Step2: Hoja1 debe tener una lista con conceptos [Seet1,Sheet2,Sheet3...Sheet13] ; también puede ser [Hoja1, Hoha2, ... Hoja13]

Step3; colocar el código siguiente en el FORMULARIO.

Private Sub CommandButton1_Click()
    'todas visibles
    Dim hoja As Worksheet
    For Each hoja In ActiveWorkbook.Worksheets
        hoja.Visible = xlSheetVisible
    Next hoja
End Sub
Sub CommandButton2_Click()
     'ocultar rango
     Dim ws As Worksheet
        For Each ws In Worksheets
            If WorksheetFunction.CountIf(Range(edNumero.Text), ws.Name) > 0 Then
                ws.Visible = xlSheetHidden
            Else
                ws.Visible = xlSheetVisible
            End If
        Next ws
    Set ws = Nothing
End Sub
Private Sub CommandButton3_Click()
    ' salir del formulario borrando el rango .
    edNumero.Text = Empty
    UserForm1.Hide
End Sub
Private Sub CommandButton4_Click()
    'todas ocultas excepto Hoja1
    Sheets(1).Visible = True
    For i = 2 To Sheets.Count
        Sheets(i).Visible = False
    Next
End Sub
Private Sub CommandButton5_Click()
    'mostrar las hojas del rango
    Dim ws As Worksheet
        For Each ws In Worksheets
            If WorksheetFunction.CountIf(Range(edNumero.Text), ws.Name) > 0 Then
                ws.Visible = xlSheetVisible
            Else
                ws.Visible = xlSheetVisible
            End If
        Next ws
    Set ws = Nothing
End Sub
Private Sub edNumero_BeforeDragOver(Cancel As Boolean, ByVal Data As MSForms.DataObject, ByVal x As stdole.OLE_XPOS_CONTAINER, ByVal y As stdole.OLE_YPOS_CONTAINER, ByVal DragState As MSForms.fmDragState, Effect As MSForms.fmDropEffect, ByVal Shift As Integer)
End Sub
'Range(edNumero.Text).SpecialCells(xlCellTypeBlanks).EntireRow.Delete Shift:=xlUp
 '   Selection.End(xlUp).Select

el formulario debe lucir algo así

Entonces ya sea que generes un botón que ejecute el formulario o puedes poner las macros por separado según te convenga, yo genere un botón para mostrar el formulario y entonces pueda elegir la acción que quiero que realice.

Me quedó así:

(A ver si carga el gif)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas