Hacer que una macro se active cuando cambia automáticamente el valor de una celda y agregue la fecha actual

Me cuesta hacer esta macro y que sea aplicado a todas las celdas del rango. Lo que quiero es que cada vez que cambie un valor en una celda de una columna automáticamente, se agregue un valor de fecha en la columna siguiente o en otra columna. Yo he intentado de varias formas hacer la macro pero sin resultados satisfactorios.
Nota 1: La Sub Change no sirve porque hay que hacer cambios manualmente en la hoja (luego apretar intro) para que después actue la macro.
Nota 2: La Sub Calculate es la recomendada para hacer esto (Todo Automático) pero hay algo que no logro hacer bien.
Ejemplo de la macro; Sub Calculate
1. Eligir el rango (C:C)
2. Formula (IF) para cuando si se cambia un valor de una celda en (C:C) agregar una fecha en la misma fila pero en la columna siguiente (Ejem. Si cambia automáticamente C3, fecha actual en D3).

Eso amigos, con lo mejor que he probado, aplico el bucle For-Next pero me agrega la fecha una vez y luego como no esta vacio, no hace el cambio de fecha. Y si elimino la condición If Range("d" & i).Value = "", me agrega la fecha (Now) en todas las celdas de la columna ("D").
Acá está mi proyecto
-------------------------------------------------
Private Sub Worksheet_Calculate()
Static anteriorvalor As Variant
Dim i As Integer
For i = 2 To 10
If Range("d" & i).Value = "" And Range("c" & i) <> anteriorvalor Then
Range("d" & i).Value = Now
End If
Next i
End Sub
-------------------------------------------------
Si me pueden ayudar se los agradecería mucho, estoy con esto de hace semanas...

1 Respuesta

Respuesta

[Hola 

Te paso la macro, 

Private Sub Worksheet_Change(ByVal Target As Range)
'
'**Por Adriel Ortiz
'
    If Not Intersect(Target, Range("C:C")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        Select Case Target
        Case ""
            Cells(Target.Row, "D") = ""
        Case Else
            Cells(Target.Row, "D") = Now()
        End Select
    End If
End Sub

Valora para finalizar saludos!

Gracias por responder amigo, pero no era el objetivo de mi pregunta. Yo quiero que al cambiar automáticamente una celda de la columna ("C"), aparezca la fecha al lado en la columna ("D"). Lo que usted me respondió sirve solamente si yo hago un cambio manual en una celda de la columna ("C"). Necesito un Sub Calculate y no lo encuentro por ningún lado... Saludos

¿Obtienes algún resultado de una fórmula en la columna C.? Si es así, esto no funciona.

Explica como son tus procesos para que obtengas la fecha en la columna D

Así es, la columna C cambia de acuerdo a códigos (numero de cliente) que se ingresan en una tabla X. La fórmula que ocupo en la columna C es la función Contar. Si(tabla x ; Bx). Donde Bx son celdas de la columna B que tienen un código por cliente.

Ej: Si un cliente tiene numero 003. Y tiene 2 pedidos, en la tabla x habré escrito dos veces 003. Y entonces en la columna C me aparecerá (2). Si ahora ingreso nuevamente el código 003 en la tabla x. En columna C aparecerá (3). Y es aquí donde quiero que me agregue la fecha al lado. Porque se supone que los pedidos se hacen en distinto tiempo. Cada vez que cambie alguna celda de la columna C necesito que me ponga la fecha actual al lado. Eso es... Saludos

Como en la columna B digitas los códigos usa esto

Private Sub Worksheet_Change(ByVal Target As Range)
'
'**Por Adriel Ortiz
'
    If Not Intersect(Target, Range("B:B")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        Select Case Target.Value
        Case ""
            Cells(Target.Row, "D") = ""
        Case Else
            Cells(Target.Row, "D") = Date
        End Select
    End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas