Excel - Problema con BeforeClose NO funciona el evento Cancel

 
Vista:

Problema con BeforeClose NO funciona el evento Cancel

Publicado por OrionJJ (4 intervenciones) el 09/04/2020 14:06:13
Hola, esta es mi primera participación y me encanta el foro.
Tengo un problema con el evento Cancel en el siguiente procedimiento, con el que no consigo cancelar el cierre del libro. Aunque fijo el valor de Cancel a True, y he comprobado que lo toma adecuadamente, el libro sigue cerrándose. ¿Podéis ayudarme a identificar cual es el problema? Gracias.

Ahí va el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Option Explicit
 
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim xx As Integer, difFecha As Double, MemoMes As String, MemoNuMes As String
    Dim TSel As Integer
 
    MemoMes = "": MemoNuMes = ""
 
    For xx = 23 To 34
        difFecha = DateDiff("s", Sheets("PARAM").Cells(xx, 8), Sheets("PARAM").Cells(xx, 9))
        If difFecha < 0 Then
            MemoMes = MemoMes & Sheets("PARAM").Cells(xx, 7) & " " ' hay modificaciones sin calcular
            If MemoNuMes = "" Then MemoNuMes = Format(xx - 22, "00")
        End If
    Next xx
 
    If MemoMes <> "" Then ' hay modificaciones sin calcular
        TSel = MsgBox("En la(s) hoja(s) del mes " & MemoMes & "parece que ha hecho modificaciones y NO ha CALCULADO." & Chr(10) & _
        "¿Quiere calcular antes de cerrar?", vbYesNo + vbExclamation, "ATENCIÓN")
        If TSel = vbYes Then
            Cancel = True
            Exit Sub
        End If
    End If
 
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema con BeforeClose NO funciona el evento Cancel

Publicado por OrionJJ (4 intervenciones) el 09/04/2020 14:44:19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim xx As Integer, difFecha As Double, MemoMes As String, MemoNuMes As String
    Dim TSel As Integer
 
    MemoMes = "": MemoNuMes = ""
 
    For xx = 23 To 34
        difFecha = DateDiff("s", Sheets("PARAM").Cells(xx, 8), Sheets("PARAM").Cells(xx, 9))
        If difFecha < 0 Then
            MemoMes = MemoMes & Sheets("PARAM").Cells(xx, 7) & " " ' hay modificaciones sin calcular
            If MemoNuMes = "" Then MemoNuMes = Format(xx - 22, "00")
        End If
    Next xx
 
    If MemoMes <> "" Then ' hay modificaciones sin calcular
        TSel = MsgBox("En la(s) hoja(s) del mes " & MemoMes & "parece que ha hecho modificaciones y NO ha CALCULADO." & Chr(10) & _
        "¿Quiere calcular antes de cerrar?", vbYesNo + vbExclamation, "ATENCIÓN")
        If TSel = vbYes Then
            Cancel = True
            Exit Sub
        End If
    End If
 
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.758
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Problema con BeforeClose NO funciona el evento Cancel

Publicado por Antoni Masana (1726 intervenciones) el 09/04/2020 16:40:40
La cuestión es
¿La macro está en el sitio correcto?
¿Que versión tienes tienes de Excel?

Lo he probado en el Excel 2010 y funciona, creo recordar que algo del cierre era diferente en alguna versión.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con BeforeClose NO funciona el evento Cancel

Publicado por OrionJJ (4 intervenciones) el 09/04/2020 18:36:33
Hola. Tengo excel 2016. La macro está en ThisWorkbook, creo que es el correcto ¿?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.758
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Problema con BeforeClose NO funciona el evento Cancel

Publicado por Antoni Masana (1726 intervenciones) el 09/04/2020 23:09:23
Lo he probado con el Excel 365 y la parte de la pregunta y la cancelación Funciona.
Cuando se responde SI no cierra el libro.
Ahora solo me queda por preguntar:
¿Sale la ventana del MsgBox?
¿Has probado esto?

1
2
3
4
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    MsgBox "No se cierra."
    Cancel = True
End Sub

Esto no debería dejar cerrar el libro. ¿Funciona?


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con BeforeClose NO funciona el evento Cancel

Publicado por OrionJJ (4 intervenciones) el 12/04/2020 16:23:56
Buenas tardes,
Sí, el msgbox se abre y carga bien la respuesta vbyes, pero al cambiar el Cancel a True se cierra, comprobando que el flujo pasa por la instrucción con los valores correctos.
He probado el mismo código con el excel de mi ordenador personal y funciona bien, es decir, Cancel=True y no se cierra.
Debe ser un problema de esa versión de excel.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar