Escribir la fecha automáticamente al editar una celda. Trabajando con tablas

Estimado,

Tengo una base de datos donde actualizo constantemente los campos. Tengo varias columnas que modifico a diario y a la derecha agrego la fecha en la que se hizo la modificación.

La idea es que la fecha se modifique de forma automática, he visto algunas soluciones pero lo más cerca que llegue es que la fecha se actualice al pasar el cursor por encima de la celda, por lo que era más el caos que lo que ayudaba.

Estoy trabajando con la función tabla, esta se llama "Tabla1" y ocupo mucho los autofiltros, que espero no sea un impedimento para la programación de esta macro.

Espero me puedan ayudar,

De antemano muchas gracias,

Saludos,

1 respuesta

Respuesta
2

Prueba con la siguiente macro. La macro la tienes que poner en los eventos de worksheet.

Lo que hace es, cada que modificas alguna celda de la columna A o la columna D, en automático te pone la fecha en la celda de la derecha.

Si necesitas otras columnas modifica la macro, por ejemplo, si necesitas las columnas B, D, F, cambia esto: "A:A, D:D", por esto "B:B, D:D, F:F"

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, Range("A:A,D:D")) Is Nothing Then
        If Target.Count = 1 Then
            Cells(Target.Row, Target.Column + 1) = Date
        End If
    End If
End Sub

Sigue las Instrucciones para poner la macro en worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. Del lado derecho copia la macro

Esta Genia!

Estoy muy contento muchas gracias Dante!

Una ultima consulta, es posible que la macro no se ejecute en el rango de filas 1:6. Es decir, ¿las seis primeras filas?

O, como otra opción, ¿qué la macro solo e ejecute en el rango de la "tabla1"?

Muchísimas gracias!

Pude acotar por filas cambiando el rango "A:A,D:D" por "A7:A10000,D7:D10000"

y funciona perfecto, pero ya por curiosidad, es posible acotarlo a la "Tabla1"??

Saludos!

Puede ser así, pero sería conveniente que tu "Tabla1" sea solamente una columna, pero prueba los resultados

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, Range("tabla1")) Is Nothing Then
        If Target.Count = 1 Then
            Application.EnableEvents = False
            Cells(Target.Row, Target.Column + 1) = Date
            Application.EnableEvents = True
        End If
    End If
End Sub

Recuerda valorar la respuesta.

Gracias por tu atención Dante.

Probé la solución y lo que hizo fue escribir la fecha a la derecha de cualquier celda modificada en la tabla. A lo largo de todas las filas y columnas de la tabla.

¿Se podrá acotar con el nombre del encabezado de la tabla? (header)

Gracias!

Tendría que revisar cómo tienes la "tabla1" para adaptar la macro. Envíame tu archivo y con ejemplos reales me pones con colores lo que tienes y lo que esperas como resultado, de preferencia utiliza 2 hojas, en una me pones lo que tienes y en otra me pones el resultado que esperas.

Mail enviado!

gracias

Quedaría así para que funcione únicamente con los datos de la "Tabla1"

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    i = Range("tabla1").Cells(1, 1).Row
    r = Range("tabla1").Rows.Count + i - 1
    If Not Intersect(Target, Range("A" & i & ":A" & r & ",Q" & i & ":Q" & r & ",S" & i & ":S" & r & _
                                   ",U" & i & ":U" & r & ",W" & i & ":W" & r)) Is Nothing Then
        If Target.Column = 1 Then n = 2 Else n = 1
        If Target.Count = 1 Then
            Cells(Target.Row, Target.Column + n) = Date
        End If
    End If
End Sub

Saludos.Dante Amor

Recuerda valorar la respuesta.

.

Muchas gracias Dante por darte el tiempo de escuchar mi consulta completamente.

La solucion es perfecta, agregar "If Target.Count = 1 Then" es una delicadeza que se agradece mucho.

Suerte en todo espero nos encontremos luego!

(Ya valore, se puede valorar de nuevo)

(Quite el voto positivo por error pero lo volví a poner, espero no afecte)

Saludos!

Ah, pensé que te faltaba valorar:

Al final de mi respuesta dice: “Es una buena respuesta” y puedes seleccionar una de 3 opciones:

  • Excelente
  • Si
  • No

si ya la valoraste, puedes cambiarla.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas