Guardar histórico de celdas modificadas en Excel – Parte 2

PARTE 1

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.

You may also like...