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
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
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
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
No hay comentarios.:
Publicar un comentario