¿Cómo logro insertar la hora y fecha(separados) de apertura y cierre de un caso(celda) en Excel de manera automática?

Necesito que la Hoja me indique de manera automatizada la fecha (B1) y la hora (C1) cuando elija de un DataValidation list "Abierto" en la celda A1 sin que esta cambie, lo mismo cuando Elija "Cerrado" (D1) que me muestre la fecha y hora sin afectar el otro calculo. Esto para medir el tiempo de respuesta entre la apertura de un caso y la conclusion del mismo.

2 respuestas

Respuesta
1

No llego a entender bien la pregunta, si es lo que creo, lo que necesitas es que cada vez que modificás la columna A para poner el status "abierto", entonces te ponga la fecha / hora de apertura y si modificás la columna C poniendo "cerrado", que haga lo propio en las otras columnas.

Si este es el caso, entonces llama al editor de VBA (<ALT><F11>) y en la hoja en cuestión ingresa el siguiente código

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
   If Target = "Abierto" Then
      Target.Offset(0, 1) = Date
      Target.Offset(0, 2) = Time
   End If
ElseIf Target.Column = 3 Then
   If Target = "Cerrado" Then
      Target.Offset(0, 1) = Date
      Target.Offset(0, 2) = Time
   End If
End Sub

¡Gracias! 

Pero me sale Error porque falta un End If. Es básicamente lo que planteas, Quiero que de la Columna B para poner el estado "Abierto" me ponga la fecha "Columna C" y hora "Columna E"  y si modifico la Columna F "Cerrada" o "Declinada" me ponga la fecha "Columna G" y hora "Columna I".

Muchas gracias por dedicarme un tiempo

Tenés razón, antes del End Sub debes colocar otro End If.

Te reescribo el código con los cambios que planteás.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then            'Columna B
   If Target = "Abierto" Then
      Target.Offset(0, 1) = Date     'Columna C
      Target.Offset(0, 3) = Time     'Columna E
   End If
ElseIf Target.Column = 6 Then        'Columna F
   If Target = "Cerrado" Or Target = "Declinada" Then
      Target.Offset(0, 1) = Date     'Columna G
      Target.Offset(0, 3) = Time     'Columna I
   End If
End If
End Sub
Respuesta
1

Te propongo una opción similar, la diferencia cosiste en que se puede limitar el rango, por ejemplo Range("A2:A6, D2:D6")

Private Sub Worksheet_Change(ByVal Target As Range)
'************ By Gerson Pineda ************
On Error Resume Next
If Not Intersect(Target, Range("A2:A6, D2:D6")) Is Nothing Then
With Target
If .Column = 1 Then
If .Value = "Abierto" Then
.Offset(, 1) = VBA.Date
.Offset(, 2) = VBA.Now
End If
End If
If .Column = 4 Then
If .Value = "Cerrado" Then
.Offset(, 1) = VBA.Date
.Offset(, 2) = VBA.Now
End If
End If
End With
End If
On Error GoTo 0
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas