Crear botón en excel que desactive una macro

Tengo una macro en un libro de excel que es un contador para cerrar el libro después de 5 minutos.

Quisiera crear un botón que desactive esa macro ingresando una contraseña, es decir:

Varios usuarios llenan el libro con datos y diario en la mañana se hace una revisión con el gerente pero quisiera que el gerente no tuviera habilitado el contador de tiempo, que cuando de click al botón le pida una contraseña y al ingresarla se desactive el contador.

1 Respuesta

Respuesta
1

Para crear una macro que cancele el evento anterior, hay que saber como fue configurado el evento... la hora exacta en que se programó.

La mayoría de veces se programa esto con un

Application. OnTime Now + TimeValue(... si lo has hecho asi no se puede, pues la hora no ha sido grabada en ninguna variable a la que el nuevo procedimiento pueda acceder para cancelarlo...

Sin embargo si es posible si se modifica, se agrega una variable y se le da caracter global (valida en el módulo para ambos procedimientos).

Publica como es la instrucción (o mejor aun, la macro) que genera el evento, pues hay que modificarla para que el evento de cancelación pueda tener los datos necesarios.

Descuida no es nada complicado lo que pides.

Hola, muchas gracias por su respuesta.

El código lo he puesto así...

Private Sub Workbook_Open()
'Quitar las alertas
Application.DisplayAlerts = False
'Desactivar arrastrar y copiar
Application.CellDragAndDrop = False
With Application
'Desactivar copiar y pegar
.OnKey "^c", "": .OnKey "^x", "": .OnKey "^v", ""
End With
'Contador para cerrar
Application.OnTime Now + TimeValue("00:05:00"), "cerrar"
'Activar las alertas
Application.DisplayAlerts = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    'Activar arrastrar y copiar
    Application.CellDragAndDrop = True
End Sub

y he puesto un modulo así...

Sub cerrar()
'Cerrar el libro guardando cambios
ActiveWorkbook.Close SaveChanges:=True
End Sub

lo que me gustaría que hiciera el botón es que cuando el gerente entre a revisar el archivo no se cierre a los 5 minutos pero que esto se logre presionando un boton que pida una contraseña para que solo el pueda tener esa funcion y que cuando lo cierre se vuelva a activar el contador de tiempo.

Muchas gracias desde ya!

Es justo lo que pensaba... además de agregar una macro había que modificar un poco la que había...

En la primera macro (la que está en ThisWorkbook), cambia

'Contador para cerrar
Application. OnTime Now + TimeValue("00:05:00"), "cerrar"

por

'Llamada a macro que programa cierre
Call activa

y hay que agregar, varias cosas en el módulo normal:

 ' Con esta línea la contraseña no diferencia mayúsculas y minúsculas
Option Compare Text ' PUEDE BORRARSE SI DESEAS QUE SI DIFERENCIE
Public tiempoCierre As Date                                  '   LINEA AGREGADA
Sub cerrar()
'Cerrar el libro guardando cambios
ActiveWorkbook.Close SaveChanges:=True
End Sub
' programa (activa) el evento de cierre
Sub activa()
    tiempoCierre = Now + TimeValue("00:00:30")                                                     '  LINEA AGREGADA
    Application.OnTime EarliestTime:=tiempoCierre, procedure:="cerrar"             '  LINEA MODIFICADA
End Sub
'  macro que cancela el evento de cierre
Sub cancela()
Dim pword As String, rpta
Dim titulo As String, mensaje As String
pword = "clave777"         '  AQUI PROGRAMAR LA CONTRASEÑA
' SOLICITAR EL INGRESO DE LA CONTRASEÑA
titulo = "CONFIRMACIÓN"
mensaje = "Para mantener el archivo abierto ingrese la contraseña adecuada"
rpta = InputBox(prompt:=mensaje, Title:=titulo)
' VALIDAR LA CONTRASEÑA Y DAR MENSAJE
titulo = "AVISO"
If rpta = pword Then
    mensaje = "La contraseña es correcta. El archivo permanecerá abierto."
    ' CANCELAR EL EVENTO
    Application.OnTime EarliestTime:=tiempoCierre, procedure:="cerrar", schedule:=False
Else
    mensaje = "La contraseña es incorrecta. El archivo se cerrará en breve."
End If
MsgBox prompt:=mensaje, Title:=titulo, Buttons:=vbInformation
End Sub

La macro cancela la tienes que asociar a un botón...

En la pestaña Desarrollador (o Programador dependiendo de tu versión de Excel), selecciona

Insertar... y luego el primer ícono, dibuja el botón y cuando te pida asociar a una macro, eliges cancela

Ah... modifica la línea pword="clave777" para la clave que realmente desees

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas