Ayuda con el cambio de Hoja al copiar datos entre.

Buen día!, tengo la siguiente macro, la cual me registra el dato y la fecha (ambos en la Hoja2, celdas A2 y B2 respectivamente) en que se ha modificado una celda A1 de la Hoja1.
Funciona de manera correcta pero al ejecutar algún cambio en A1 de la Hoja1 se ve un ligero parpadeo que es donde la macro esta guardando el dato en la Hoja2, quisiera ver si se puede quitar esa intermitente y que al cambiar de valor en A1 de la Hoja1 se vea normal sin que se note que se ejecuta algo.
Esta es la macro:
Private Sub Worksheet_Change(ByVal Target As Range)
'variable para asignar el valor a la hoja2
Dim num As Integer
If Target.Address = "$A$1" Then
num = Range("A1").Value
'Activo la hoja2 para hacer el historial
Sheets("Hoja2").Select
Sheets("Hoja2").Range("A2").Activate
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Activate
Loop
'Desprotejo la hoja2
ActiveSheet.Unprotect
'asigno el valor y la fecha de modificacion
ActiveCell.Value = num
ActiveCell.Offset(0, 1) = Now
ActiveSheet.Unprotect
ActiveCell.Offset(0, 1).NumberFormat = "mm/dd/yyyy hh:mm:ss"
ActiveSheet.Protect
ActiveSheet.Protect
ActiveSheet.Unprotect
'Target.Offset(0, 1) = Now
'ActiveSheet.Unprotect
'Target.Offset(0, 1).NumberFormat = "mm/dd/yyyy hh:mm:ss"
ActiveSheet.Protect
ActiveSheet.Protect
End If
'Sheets("Hoja2").Protect
'Regreso a la hoja1
Worksheets("Hoja1").Activate
ActiveSheet.Protect
End Sub
Ah otra cosa las hojas1 y 2 están protegidas y solo la celda A1 de la Hoja1 puede ser modificable.
Espero puedan ayudarme, muchas gracias!

1 respuesta

Respuesta
1
Eso lo puedes solucionar con esto en tu código
Application.ScreenUpdating = False
Podria ser asi
Private Sub Worksheet_Change(ByVal Target As Range)
'variable para asignar el valor a la hoja2
Dim num As Integer
Application.ScreenUpdating = False
If Target.Address = "$A$1" Then
num = Range("A1").Value
'Activo la hoja2 para hacer el historial
Sheets("Hoja2").Select
Sheets("Hoja2").Range("A2").Activate
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Activate
Loop
'Desprotejo la hoja2
ActiveSheet.Unprotect
'asigno el valor y la fecha de modificacion
ActiveCell.Value = num
ActiveCell.Offset(0, 1) = Now
ActiveSheet.Unprotect
ActiveCell.Offset(0, 1).NumberFormat = "mm/dd/yyyy hh:mm:ss"
ActiveSheet.Protect
ActiveSheet.Protect
ActiveSheet.Unprotect
'Target.Offset(0, 1) = Now
'ActiveSheet.Unprotect
'Target.Offset(0, 1).NumberFormat = "mm/dd/yyyy hh:mm:ss"
ActiveSheet.Protect
ActiveSheet.Protect
End If
'Sheets("Hoja2").Protect
'Regreso a la hoja1
Worksheets("Hoja1"). Activate
ActiveSheet. Protect
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas