Ejecutar macro al salir de una hoja

Necesitaría ejecutar esta macro:

Private Sub Worksheet_Deactivate()
Call Celdas_oculta
End Sub

Pero que actúe solo en la hoja de salida y no en la activa.

2 respuestas

Respuesta
1

Si quieres el evento en thisworbook, sería así:

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    If Sh.Name = "salida" Then
        Call Celdas_oculta
    End If
End Sub

Hola Dante

He quitado :

Private Sub Worksheet_Activate()
Call Celdas_oculta
End Sub

Y salgo de la página y al volver no me ha ocultado las celdas.

Un saludo

¿La quitaste pero pusiste lo que te envié en los eventos de thisworkbook?

¿Estás ocultando celdas o toda una fila o toda una columna?

¿Y cómo se llama la hoja con la que quieres trabajar?

Yo le puse "salida" revisa el nombre y cámbialo por el correcto, revisa mayúsculas y minúsculas.

He quitado :

Private Sub Worksheet_Activate()
Call Celdas_oculta
End Sub

Y he puesto:

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If Sh.Name = "salida" Then
Call Celdas_oculta
End If
End Sub

La macro es:
Sub Celdas_oculta()
ActiveSheet.Unprotect Password:="1"
Range("B8:O8").Select
Selection.EntireColumn.Hidden = False
Range("L9,B9,C9,G9:O9,B9,P9,Q9").Select
Selection.EntireColumn.Hidden = True
Range("A9").Select
Selection.ColumnWidth = 65
ActiveSheet.Protect Password:="1"
Range("E9").Select
End Sub

Oculta columnas donde están los costes y margenes.
Y la hoja se llama "Listado"
Gracias Dante

Le he cambiado el nombre y puse:

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If Sh.Name = "Listado" Then
Call Celdas_oculta
End If
End Sub

Si lo pongo en la hoja no me hace nada

Y si lo pongo en thisworkbook, me lo hace en la siguiente hoja que abro.

Un saludo Dante

Lo que pasa es que tienes esto en tu macro:

Sub Celdas_oculta()
ActiveSheet.

Lo estás haciendo sobre la hoja activa. La hoja activa es la que seleccionaste. Es decir, la hoja "Listado" ya no es la hoja activa, te saliste de la hoja "Listado", ¿me explico?

Ahora si quieres hacer cambios en la hoja "Listado" puedes hacer lo siguiente:

Sub Celdas_oculta()
    Set h1 = "Listado"
    h1.Unprotect Password:="1"
    h1.Range("B8:O8").EntireColumn.Hidden = False
    h1.Range("L9,B9,C9,G9:O9,B9,P9,Q9").EntireColumn.Hidden = True
    h1.Range("A9").ColumnWidth = 65
    h1.Protect Password:="1"
End Sub
Respuesta

Pues ese código ponlo en la hoja que quieras que lo ejecute (por lo que dices debería estar solo en la hoja "salida"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas