Fecha y hora al introducir código en Excel

Como hacer para que cada vez que ingrese un código en una planilla de Excel con un "lector de código", en la celda siguiente me de fecha y hora que se ingresa dicho código (valga la redundancia).

1 Respuesta

Respuesta
1

Podrias ser algo asi

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
UF = Range("A" & Rows.Count).End(xlUp).Address
If Range(UF).Offset(0, 1).Value = "" Then
    Range(UF).Offset(0, 1).Value = Date & " " & Time
End If
If Target.Column = 1 Then
    If ActiveCell.Value <> "" Then
        ActiveCell.Offset(0, 1).Value = Date & " " & Time
    End If
End If
End Sub

Trabaja sobre la columna A pero se puede modificar, si en la ultima fila con dato, la columna siguiente esta vacia entonces pega la fecha y la hora, tambien le agregue que si la celda activa (dentro del a columna A) tiene dato entonces pega la fecha y la hora en la siguiente columna

[quote]

SI te sirvio la respuesta no olvides valorarla -

¡Gracias! sos un grande!!! me funcionó excelente. gracias otra vez!

Hola de nuevo...

quería consultarte una cosa mas de lo ya hablado. lo que me dijiste me funcionó perfecto... pero ahora quisiera que cuando borro los datos ingresados en la columna A, también se borre la fecha de la columna siguiente, NO que también me registre el borrado de dicha columna... me explico?

Para que sea automático como la macro anterior lo único que me ocurre es trabajar sobre la celda activa

Algo así

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
UF = Range("A" & Rows.Count).End(xlUp).Address
If Range(UF).Offset(0, 1).Value = "" Then
    Range(UF).Offset(0, 1).Value = Date & " " & Time
End If
If Target.Column = 1 Then
    If ActiveCell.Value <> "" Then
        ActiveCell.Offset(0, 1).Value = Date & " " & Time
    ElseIf ActiveCell.Value = "" Then
        ActiveCell.Offset(0, 1).Valime. =""
End If
End Sub

De lo contrario tendrías que hacer una macro en un módulo con un For each y ejecutarla con ALT+F8 ocolocando un botón en la hoja u en la barra

hasta ahí ya no llego... pero no hay drama! gracias igual... de todas formas así como me mencionaste anteriormente, me funciona.

discúlpame que te moleste otra vez... pero no puedo encontrar el error aquí (estos son otros eventos que necesito)

Option Explicit
Dim valor As Long
Dim cantidadVeces As Integer
Dim celdaSumas As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)   <---------- (aquí me muestra el error)

If celdaSuma = True Then
cantidadVeces = cantidadVeces + 1
If cantidadVeces > 1 Then
Exit Sub
End If
valor = valor + Sheets("Stock").Range(Target.Address).Value
Sheets("Stock").Range(Target.Address).Value = valor
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
valor = 0
cantidadVeces = 0
Call celdaAcumalativa(Target.Address)
If celdaSuma = True Then
valor = Sheets("Stock").Range(Target.Address).Value
End If
End Sub

Sub celdaAcumalativa(celda As String)
Dim busquedaFilaDatos As Range
Dim RangoBusqueda As String
Dim ultFila As Long
ultFila = Sheets("PARAMETRO").Range("B" & Rows.Count).End(xlUp).Row
RangoBusqueda = "B3:B" & ultFila
Set busquedaFilaDatos = Sheets("PARAMETRO").Range(RangoBusqueda).Find(celda, lookat:=xlWhole)
If Not busquedaFilaDatos Is Nothing Then
celdaSuma = True
Else
celdaSuma = False
End If
End Sub

Je je no te estaba diciendo que la hagas tu, es obvio que sino tienes noción se te va a complicar

Me refería a que si lo quieres automático lo mejor es trabajar sobre la celda activa, de lo contrario hacer una macro que recorra cierto rango y si tiene dato que pegue en la columna B la fecha y hora, y sino tiene dato que borre lo que esta en la columna B

Algo así

Sub RutinaForEach()
Dim Dx As Object
For Each Dx In Range("A1:A1000")
If Dx.Value <> "" Then
Dx.Offset(0, 1).Value = Date & " " & Time
ElseIf Dx.Value = "" Then
Dx.Offset(0, 1).Value = ""
End If
Next Dx
End Sub

No le especifique ninguna hoja asi que la puedes usar en la hoja que quieras, simplemente pega esa macro en un modulo, y luego sobre la hoja que la quieras ejecutar presionas la tecla ALT+F8 y ejecutas la macro "RutinaForEach" asi de sencillo .

*

Prueba quitando la línea "Option Explicit"

dale gracias ya voy a probar. porque tuve que salir... de todas formas mucha gracias por la ayuda y la paciencia!

Den nada compañero, recuerda valorar la respuesat y cerrar la pregunta si la info te a sido util.

La pregunta no admite más respuestas

Más respuestas relacionadas