Ocultar hojas después de ejecutar macro

La siguiente macro genera etiquetas en base a una plantilla; el caso es que me gustaría que después de darles el formato adecuado ocultes todas las hojas del documento excepto la llamada indice

Private Sub CommandButton11_Click()
'Act.Por.Dante Amor
    Hoja6.Columns("A:Q").Clear
    fin = Hoja5.Range("b65536").End(xlUp).Row
    fila = 2
    colu = 1
    j = 8
    For i = 8 To fin Step 3
        j = i
        For k = 0 To 2
            If Hoja5.Cells(j, "A").Value = "" Then Exit For
            Hoja4.Range("b2").Value = "'" & Format(Hoja5.Cells(j, "A"), "00000000")
            Hoja4.Range("A1:E5").Copy Hoja6.Cells(fila, colu)
            colu = colu + 5
            j = j + 1
        Next
        'j = i
        colu = 1
        fila = fila + 5
    Next
    Formato
    MsgBox "Etiquetas generadas"
End Sub

2 respuestas

Respuesta
2

Quedaría así:

Private Sub CommandButton11_Click()
'Act.Por.Dante Amor
    'mostrar hojas
    For Each h In Sheets
        If LCase(h.Name) <> "indice" Then
            h.Visible = True
        End If
    Next
    Hoja6.Columns("A:Q").Clear
    fin = Hoja5.Range("b65536").End(xlUp).Row
    fila = 2
    colu = 1
    j = 8
    For i = 8 To fin Step 3
        j = i
        For k = 0 To 2
            If Hoja5.Cells(j, "A").Value = "" Then Exit For
            Hoja4.Range("b2").Value = "'" & Format(Hoja5.Cells(j, "A"), "00000000")
            Hoja4.Range("A1:E5").Copy Hoja6.Cells(fila, colu)
            colu = colu + 5
            j = j + 1
        Next
        'j = i
        colu = 1
        fila = fila + 5
    Next
    formato
    '
    'Ocultar hojas
    existe = False
    For Each h In Sheets
        If LCase(h.Name) = "indice" Then
            existe = True
            Exit For
        End If
    Next
    If existe Then
        For Each h In Sheets
            If LCase(h.Name) <> "indice" Then
                h.Visible = False
            End If
        Next
    End If
    MsgBox "Etiquetas generadas"
End Sub

Al principio de la macro, puse estas líneas para mostrar las hojas:

    'mostrar hojas
    For Each h In Sheets
        If LCase(h.Name) <> "indice" Then
            h.Visible = True
        End If
    Next

Si no quieres mostrar las hojas, entonces puedes borrar las líneas.


'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
Respuesta
1

.12.01.17 

Hola, Pablo

Agregá estas tres líneas al final de tu rutina:

For Each LaHoja In Sheets
    If LaHoja.Name <> "indice" Then LaHoja.Visible = False
Next

Y te dejará visible sólo la hoja indice

Desde luego, acordate de poner una instrucción que haga visible la hoja/s que nececités en la/s otra/s macro/s que tuvieras, con una instrucción inicial como esta:

Hoja6.Visible = True

Abrazo

Fernando

(Buenos Aires, Argentina)

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas