lunes, 16 de agosto de 2021

47- Eventos de Hoja (Parte 3)

 A continuación veremos otros Eventos de hoja Excel, siguiendo con el tema desarrollado en entradas 45 y 46.

4 - ACTIVATE:  acción que se ejecuta al ingresar o activar una hoja.

Ejemplo: al ingresar a una hoja se muestra un formulario o Userform:

Private Sub Worksheet_Activate()

'mostrar un formulario al entrar a la hoja

Userform1.Show

End Sub


5 - DEACTIVATE: acción que se ejecuta al salir o desactivar una hoja.

En el evento Deactivate, la hoja activa pasa a ser la de destino, por lo tanto en la macro habrá que indicar cuál es la hoja que se está desactivando.

Ejemplo: al salir de una hoja llamada JULIO se la oculta.

Private Sub Worksheet_Deactivate()

'al salir de la hoja se la oculta.

Sheets("JULIO").Visible = False

End Sub


Nota: Con Visible = False la hoja puede volverse visible desde el menú Formato, Mostrar Hojas. Para evitar esto se la debe ocultar con Visible = xlVeryHidden

6 - FOLLOW HYPERLINK: este evento se ejecuta cuando hacemos clic en algún hipervínculo.

Ejemplo: en la siguiente imagen tenemos una lista con nombres de hojas, con  hipervínculo.  Las hojas se encuentran ocultas y para el ingreso a ellas se solicita una clave.


Ese código se ejecutará antes de ingresar a la hoja. Para ello debemos extraer del hipervínculo la parte del texto que corresponde al nombre de la hoja, o sea del argumento 'subaddress'. Y lo haremos con la función INSTR.

Ejemplo de texto de un hipervínculo: 

nombre completo del libro - 

nombre de la hoja 

!    (signo de exclamación)

celda donde se debe posicionar


Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

If InStr(1, Target.SubAddress, "!") > 0 Then

    'obtener la cadena con el nombre del libro, sin el signo !

    hojax = Left(Target.SubAddress, InStr(1, Target.SubAddress, "!") - 1)

   'se solicita clave de ingreso

    cla = InputBox("Ingresa tu clave")

    'si la clave no es la correcta se deja la hoja oculta

    If cla <> "cliente" Then

        Sheets(hojax).Visible = xlVeryHidden

    Else

     'si la clave es correcta, se muestra la hoja y se la activa

        Sheets(hojax).Visible = True

        Sheets(hojax).Activate

    End If

End If

End Sub



7 - BEFORE DELETE: Este evento se ejecuta cuando intentamos eliminar una hoja.

Ejemplo 1: se guarda una copia del libro antes de eliminar cierta hoja.

Private Sub Worksheet_BeforeDelete()

'ruta del libro activo

ruta = ThisWorkbook.Path & "\"

'el nombre será el de la hoja, guión bajo, nombre del libro activo

nbre = ActiveSheet.Name & "_" & ActiveWorkbook.Name

'guardado de copia

ActiveWorkbook.SaveCopyAs ruta & nbre

End Sub 


Ejemplo 2: crear copia de la hoja y luego eliminar la original.

Private Sub Worksheet_BeforeDelete()

'pasos a realizar antes de eliminar una hoja (idea original encontrada en la web)


Application.ScreenUpdating = False

'1- guardar en una variable el nombre de la hoja activa (por ej: CAJA) y el nombre con el que se renombrará.

hojax = ActiveSheet.Name

hojay = ActiveSheet.Name


'2- renombrar la hoja original (por ej: CAJA_x)

ActiveSheet.Name = hojay


'3- hacer una copia de la hoja activa (quedaría CAJA_x (2))

ActiveSheet.Copy before:=Sheets(ActiveSheet.Name)


'4- la hoja de la copia queda como la activa. Renombrarla con el nombre original=CAJA)

ActiveSheet.Name = hojax


'5- se vuelve a activar la hoja que se quiere eliminar.

Sheets(hojay).Select


End Sub


Ver VIDEO N° 47.        

Descargar libro de ejemplo desde: http://aplicaexcel.com/Blog/Libro47.xlsm


.

No hay comentarios.:

Publicar un comentario