Saltar al contenido

Consulta a otro libro y evento Worksheet_calculate


cencia

Recommended Posts

publicado

Captura.thumb.JPG.817709344c89f7e8f2956e1758a87571.JPG

 

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)

Este es el Codigo 

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 del Area es " & anteriorvalor)
    End If

End Sub

lo tengo puesto en la hoja donde esta puesta la consulta (TRABAJADORES).

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

Gracias 

 

publicado

En esa celda que consultas @cencia ¿Tienes una fórmula, verdad? :huh:

Como no has subido tu libro y es custión de adivinar, si en ella hay una fórmula, da igual que la fecha cambie o no, ESA FÓRMULA SE CALCULA al abrir el libro, y como tienes el evento Calculate, pues por eso se ejecuta la macro al abrir el libro, haya cambio de fecha o no

publicado

Perdona...........si tengo una formula. la consulta a otro libro la tengo en la celda I14 y en esa misma hoja en la celda I18 tengo una formula de igualdad a la celda I14 para asi haya una formula

Como en el Evento Calculate he puesto la condición "if" para que se ejecute si las fecha no coincide con la que tenia anteriormente no entiendo como entiende que se cumple esa condición. Voy a limitar una copia del libro y subirla.

en el libro "DATOS" cuando modifico cualquier dato en la tabla trabajadores  y le doy ordenar se graba una fecha en una campo de esa tabla, que es el campo que esta en el libro de la "2ª SEMANA" en modo consulta.

 

2ª SEMANA.xlsm

DATOS.xlsm

publicado

@cencia , creo que no has entendido cómo funciona el evento Calculate. Tu If NO EVITA que se lance el evento Calculate. Este se dispara sí o sí al calcular una celda.

Si la celda tiene una fórmula, SIEMPRE se va a calcular al abrir el libro. Y como cuando lo abres aun no tienes UN VALOR PREVIO, el If se ejecuta y te muestra el MsgBox.

No entiendo bien cómo funcionam tus macros, pero intenta cambiar el evento calculate por:
 

Private Sub Worksheet_Change(ByVal Target As Range)
Dim celda As Range

Set celda = Range("CELDA_FECHA_TRABAJADOR")
If Intersect(Target, celda) Is Nothing Then
Exit Sub
End If

Static anteriorvalor As Variant
    If Range("CELDA_FECHA_TRABAJADOR").Value <> anteriorvalor Then
        anteriorvalor = Range("CELDA_FECHA_TRABAJADOR").Value
        MsgBox ("El nuevo valor del Area es " & anteriorvalor)
    End If
End Sub

 

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.