Macro de eventos que revise si el dato evaluable se ha modificado
Para Dante Amor
Tengo un libro de Excel con una macro en la que me ayudaste por completo y funciona a la perfección. Realiza un evento para copiar registros a otras hojas según unas condiciones. Este evento se ejecuta una vez.
Podría necesitar enviar nuevas actualizaciones de los registros, aunque no sería tan imprescindible o necesario. Me explico. Podría seguir apuntando los registros en la pestaña “General” como hasta ahora. Éstos se copian a la hoja destino que toque, y después ya los voy modificando en las respectivas pestañas. Creo que así no sería estrictamente necesario modificar la macro.
En cualquier caso, imagina que he escrito datos de una venta en un registro, se activa el evento y se copia a la hoja de destino. Si por lo que sea me he equivocado al introducirlos, los borro y vuelvo a introducir otros nuevos, éstos ya no se copiaran porque al activarse el evento previo, se puso en 1 “EY”. ¿Existe alguna manera de que evalúe si el registro está vacío y vuelva a poner a 0 “EY”, es decir, si éste ha sufrido una modificación?
No sé si me he explicado bien.
Muchas gracias de nuevo, Dante!
Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
Set h1 = ActiveSheet
Set h2 = Sheets("TTE+MTJ")
Set h3 = Sheets("TTE")
Set h4 = Sheets("Sin Servicios")
'
If Not Intersect(Target, Columns("CW")) Is Nothing Then
fila = Target.Row
If Target.Count > 1 Then Exit Sub
If fila < 16 Then Exit Sub
If Cells(fila, "H") = "" Then Exit Sub
If Cells(fila, "H") = "TOTALES" Then Exit Sub
If Target.Value = "" Then Exit Sub
If h1.Cells(fila, "EY") = 1 Then Exit Sub
'
'copia a TTE
If Cells(fila, "AI") <> "" And Cells(fila, "BF") = "" Then
u = 16
Do While h3.Cells(u, "H") <> ""
u = u + 1
Loop
h1.Range("A" & Target.Row & ":DT" & fila).Copy h3.Range("A" & u)
h1.Cells(fila, "EY") = 1
End If
'copia a TTE+MTJ
If Cells(fila, "AI") <> "" And Cells(fila, "BF") <> "" Then
u = 16
Do While h2.Cells(u, "H") <> ""
u = u + 1
Loop
h1.Range("A" & Target.Row & ":EX" & fila).Copy h2.Range("A" & u)
h1.Cells(fila, "EY") = 1
End If
'copia a SinServicios
If Cells(fila, "AI") = "" And Cells(fila, "BF") = "" Then
u = 16
Do While h4.Cells(u, "H") <> ""
u = u + 1
Loop
h1.Range("A" & Target.Row & ":DT" & fila).Copy h4.Range("A" & u)
h1.Cells(fila, "EY") = 1
End If
End If
End Sub