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

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 -

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 .
*
- Compartir respuesta
