Guardar histórico de celdas modificadas en Excel – Parte 2
En este video tutorial veremos la segunda parte de nuestro archivo donde guardamos un histórico o log de celdas modificadas en Excel.
En la primera parte vemos mediante el evento Worksheet_Change cómo guardar el histórico de celdas modificas al cambiar el valor de una celda.
Ahora, con el evento Worksheet_SelectionChange guardaremos el valor anterior de una celda para luego guardarlo en el histórico, junto con el valor nuevo de las celdas.
Ver video Guardar log de celdas modificadas Parte 2
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Histórico de celdas modificadas
Imaginemos un caso donde enviamos un archivo por correo y lo deseamos de vuelta, pero queremos saber si el usuario que recibió el correo modificó algunas celdas.
En nuestro archivo de ejemplo, tenemos el rango A1:E4 el cual será el que estaremos auditando si se realiza alguna modificación en sus celdas. En la hoja Log guardaremos cada cambio realizado en la Hoja1. Guardaremos los siguientes datos:
- Fecha de modificación.
- Hora de modificación.
- Celdas modificadas.
- Usuario.
- Valor anterior de la celda modificada.
- Valor nuevo de la celda modificada.
Evento Change
Usaremos el evento Change asociado a una hoja, el cual nos ayudará a detectar cualquier celda modificada en la Hoja1. Para usar el evento, realizamos los siguientes pasos:
- Damos clic derecho sobre la etiqueta la Hoja1 > Ver código.
- Se abre el IDE de VBA.
- En el Combo General elegimos Worksheet.
- Ahora en el Combo de la derecha elegimos Change.
- Escribimos en VBA una macro que nos genere el histórico de celdas modificadas.
Evento Selection_Change
Usaremos el evento Selection_Change asociado a una hoja, el cual nos ayudará a detectar cualquier selección de celdas en la Hoja1. Cada vez que seleccionemos una celda, guardaremos en la variable Pública ValorAnterior el contenido de la celda elegida.
Luego el valor de la celda seleccionada se añadirá al log en caso de que dicha celda haya sido modificada.
Código VBA de las macros
El siguiente código VBA va alojado en el objeto Hoja1 usando el evento Worksheet_Change y Worksheet_SelectionChange.
Option Explicit Public ValorAnterior As Variant Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column <= 5 And Target.Row <= 4 Then ValorAnterior = Target.Value 'MsgBox ValorAnterior End If End Sub Private Sub Worksheet_Change(ByVal Target As Range) Dim HojaLog As Worksheet Dim RangoLog As Range Dim NuevaFila As Integer If Target.Column <= 5 And Target.Row <= 4 Then Set HojaLog = ThisWorkbook.Sheets("Log") Set RangoLog = HojaLog.Range("A1").CurrentRegion NuevaFila = RangoLog.Rows.Count + 1 With HojaLog .Cells(NuevaFila, 1).Value = Date .Cells(NuevaFila, 2).Value = Time .Cells(NuevaFila, 3).Value = Target.Address .Cells(NuevaFila, 4).Value = Application.UserName .Cells(NuevaFila, 5).Value = ValorAnterior .Cells(NuevaFila, 6).Value = Target.Value End With End If End Sub
Descarga el archivo de ejemplo
Histórico de celdas modificadas2 – EXCELeINFO.zip
Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.