Macro privé sub que ya no funciona
mima1803
-
Mima1803 -
Mima1803 -
Hola,
Me gustaría colocar en la columna B la fecha de modificación de las celdas de la columna A.
He usado private sub change. Todo funcionaba bien hasta que lockée mi hoja.
Apareció un código de error, así que añadí unprotect y protect al final. Ya no me sale ningún mensaje de error, pero la macro ya no funciona y a veces funciona pero solo para una única modificación (por ejemplo, al modificar A4, la fecha se coloca bien en B4, pero no hay nada para las demás modificaciones).
No veo de dónde proviene el error, estoy empezando.
Gracias por vuestra ayuda.
Aquí está el código utilizado :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = Range("A:A").Column Then
Application.ScreenUpdating = True
For Each c In Intersect(Target, Range("A:A"))
Unprotect ("mdp")
c.Offset(, 1) = Format(Date, "dd/mm/yy")
Next
Application.EnableEvents = False
Protect ("mdp")
End If
End Sub
Me gustaría colocar en la columna B la fecha de modificación de las celdas de la columna A.
He usado private sub change. Todo funcionaba bien hasta que lockée mi hoja.
Apareció un código de error, así que añadí unprotect y protect al final. Ya no me sale ningún mensaje de error, pero la macro ya no funciona y a veces funciona pero solo para una única modificación (por ejemplo, al modificar A4, la fecha se coloca bien en B4, pero no hay nada para las demás modificaciones).
No veo de dónde proviene el error, estoy empezando.
Gracias por vuestra ayuda.
Aquí está el código utilizado :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = Range("A:A").Column Then
Application.ScreenUpdating = True
For Each c In Intersect(Target, Range("A:A"))
Unprotect ("mdp")
c.Offset(, 1) = Format(Date, "dd/mm/yy")
Next
Application.EnableEvents = False
Protect ("mdp")
End If
End Sub
1 respuesta
-
Hola,
1 - No hay que desactivar los eventos al final del procedimiento sino antes del bucle y sobre todo reactivarlos después del bucle .
2 - Basta con desproteger una sola vez antes del bucle.
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then Application.ScreenUpdating = True Me.Unprotect ("mdp") Application.EnableEvents = False For Each c In Intersect(Target, Range("A:A")) c.Offset(, 1) = Format(Date, "dd/mm/yy") Next Application.EnableEvents = True Me.Protect ("mdp") End If End Sub
Cordialement
Patrice
Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.