Excel - Consulta a otro libro y evento Worksheet_calculate

 
Vista:
sin imagen de perfil

Consulta a otro libro y evento Worksheet_calculate

Publicado por luis (14 intervenciones) el 04/11/2017 18:49:28
Buenas tardes:

Llevo dias intententando solucionan un problema y no encuentro solucion.

Tengo dos libro

1.DATOS GENERALES

2.PRIMERA SEMANA

En el libro primera semana hay una consulta a una celda especifica en el libro: DATOS GENERALES,
Esta consulta se actualiza al abrir el libro PRIMERA SEMANA, y lo que necesito es que cuando la celda donde tengo la consulta en este libro(PRIMERA SEMANA) ejecute una macro cuando detecta un cambio de fecha.

El problema es que al abrir el libro se ejecuta la macro haya cambio en la fecha o no y no lo entiendo

Ya una vez abierto fuenciona bien (solo se ejecuta cuando hay cambio de celda)..............el problema me viene al abrir el libro en cuestion (PRIMERA SEMANA)
1
2
3
4
5
6
7
8
9
10
Private Sub Worksheet_Calculate()
 
Static anteriorvalor As Variant
    If Range("CELDA_FECHA_TRABAJADOR").Value <> anteriorvalor Then
        anteriorvalor = Range("CELDA_FECHA_TRABAJADOR").Value
        MsgBox ("El nuevo valor  se ha actualizado")
        Call Módulo3.abrelibro
    End If
 
End Sub

¿porque se me ejecuta al abrir el libro si no hay cambio de fecha?.

Gracias
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
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Consulta a otro libro y evento Worksheet_calculate

Publicado por Antoni Masana (2477 intervenciones) el 06/11/2017 07:19:27
Al abrir el libro la variable estática anteriorvalor no tiene valor por lo que siempre la condición del IF en la primera ejecición sera siempre VERDAD que es lo que te pasa.

Si lo que asignas a la variable es una fecha mejor la define la variable como Date en lugar de Variant y el resultado sería esto:

1
2
3
4
5
6
7
8
9
10
11
Private Sub Worksheet_Calculate()
    Static anteriorvalor As Date
    If anteriorvalor = Empty Then            # --- Es TRUE solo la primera ejecución
        anteriorvalor = Range("CELDA_FECHA_TRABAJADOR").Value
    End IF
    If Range("CELDA_FECHA_TRABAJADOR").Value <> anteriorvalor Then
        anteriorvalor = Range("CELDA_FECHA_TRABAJADOR").Value
        MsgBox ("El nuevo valor  se ha actualizado")
        Call Módulo3.abrelibro
    End If
End Sub

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