Insertar hora si inserto valor en Columna A o B

Buen día, quisiera saber si me pueden ayudar, mira tengo una hoja de exel en la cual quiero que cuando inserte un valor en la columna A se inserte la hora y fecha en la misma fila pero en la columna B y así también cuando inserto un valor en columna C se inserte la fecha y hora en la misma fila pero en la columna DE esto que se haga sin fórmulas sino por VBA automáticamente. Haber si me puden ayudar por favor.
Ej: COL A   COL B   COL C  COL D
1 valor 12:15 valor 16:14
2 valor 12:45 valor 16:15
3 valor 15:35
De antemano gracias.

1 respuesta

Respuesta
1
A ver si te entendí tu quieres que al insertar un valor en una celda te escriba la hora en la columna contigua, si mi apreciación es correcta entonces creo que este código te puede ayudar, crea un botón (supongo que sabes crearlo verdad) bueno una vez creado copiale este código
Sub Botón2_Haga_clic_en()
    If ActiveCell.Value = Blank Then
        MsgBox "No existe valor en la celda seleccionada"
    End If
    If ActiveCell.Value <> "" Then
        ActiveCell.Offset(0, 1).Select
        ActiveCell.FormulaR1C1 = "=NOW()"
        Selection.NumberFormat = "h:mm"
     End If
End Sub
Te explico cómo funciona:
Cuando tu metas un valor te quedas en esa celda en la que escribiste y le das click al botón al que le asignaste la macro y bingo! En la celda que esta a un lado te aparecerá la fecha. Por ejemplo supón que metes la cantidad 300 en la celda A2, bueno entonces te posicioneas en A2 das click al botón o bien, haces la combinación que le asignes a la macro (por ejemplo se me ocurre Ctrl H)y en la celda B2 aparecerá la hora. Siempre que te posiciones en una celda con algún valor en la celda y ejecutes la macro te aparecerá la hora a un lado, si te posicionas en una celda vacía e sacará un mensaje que no existe valor en la celda y no puede poner la hora. Ojo esta macro funciona por celda no por rangos.
Espero sea lo que necesitas si no avisame y/o aclarame qué es lo que necesitas.
Suerte
Hola buen día. Muchas gracias por tu pronta respuesta esta opción también me va a servir de mucho, pero el problema es otro: Mira yo tengo un almacen en el cual tengo que saber los movimientos que ha habido, más concreto entradas y salidas he aquí el problema yo utilizo un escáner y escanea alrededor de 100 artículos en una sola entrada he igual cuando tengo que registrar salidas y no puedo estar escaneando un articulo y después activar la macro necesito que se automático. Y solo cuando meto información en columna A "entradas" se inserte fecha en B y cuando inserte valor en C "salidas" me inserte el valor en DE y normalmente cuando en la columna A voy en 3000 en C apenas voy en 1600. Mira tengo este programa, el problema que solo me da la fecha cuando inserto el A y necesito que incluya que también cuando inserto en C también me de la fecha en D. Bueno te lo paso haber si puedes ayudarme te lo agradecería mucho.
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
CaptCol = "A" 'Columna donde ingresas datos
ColHora = "B" 'COlumna donde se estampa la hora y dia
CaptCol = Asc(UCase(CaptCol)) - 64
ColHora = Asc(UCase(ColHora)) - 64
ColHora = ColHora - CaptCol
If Target.Column = CaptCol Then
Target.Offset(0, ColHora).Value = Now
End If
End Sub
Ahora si creo que ya te entendí mejor, mira entonces te recomiendo lo siguiente, vacía tus datos en las columnas respectivas (tanto en A como en C) y una vez terminado ejectua el siguiente código, ya tu sabrás cómo ejecutarlo, y listo te pone la hora en las dos columnas que tengan movimientos, espero que ahora si te sirva y si no avisame.
Suerte.
Sub Botón1_AlHacerClic()
    Range("A2").Select
    While ActiveCell <> ""
            ActiveCell.Offset(0, 1).Select
            ActiveCell.Value = Format(Now, "hh:mm")
            ActiveCell.Offset(0, -1).Select
            ActiveCell.Offset(1, 0).Select
    Wend
    Range("C2").Select
    While ActiveCell <> ""
            ActiveCell.Offset(0, 1).Select
            ActiveCell.Value = Format(Now, "hh:mm")
            ActiveCell.Offset(0, -1).Select
            ActiveCell.Offset(1, 0).Select
    Wend
End Sub
Si la información te sirve no olvides calificar y cerrar la pregunta.
Sabes en el código anterior me di cuenta que había un error ya que actualizaba todas las celdas y no solo las que recientemente agregabas, así que aquí te envío la corrección te pido de favor ignores el anterior y tomes éste como el definitivo, disculpa
Sub Botón1_AlHacerClic()
    Range("A2").Select
    While ActiveCell <> ""
            ActiveCell.Offset(0, 1).Select
                    While ActiveCell <> ""
                    ActiveCell.Offset(1, 0).Select
                    Wend
            ActiveCell.Value = Format(Now, "hh:mm")
            ActiveCell.Offset(0, -1).Select
            ActiveCell.Offset(1, 0).Select
    Wend
    Range("C2").Select
    While ActiveCell <> ""
        ActiveCell.Offset(0, 1).Select
                    While ActiveCell <> ""
                    ActiveCell.Offset(1, 0).Select
                    Wend
            ActiveCell.Value = Format(Now, "hh:mm")
            ActiveCell.Offset(0, -1).Select
            ActiveCell.Offset(1, 0).Select
    Wend
End Sub
Hola nuevamente y gracias.
    Esta genial esta opción y es la que voy a usar. Solo me gustaría que vieras este código. :
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
CaptCol = "A" 'Columna donde ingresas datos
ColHora = "B" 'COlumna donde se estampa la hora y dia'
CaptCol = Asc(UCase(CaptCol)) - 64
ColHora = Asc(UCase(ColHora)) - 64
ColHora = ColHora - CaptCol
If Target.Column = CaptCol Then
Target.Offset(0, ColHora).Value = Now
End If
End Sub 
Y haber si se puede hacer algo parecido como a lo que ya me ayudaste hacer solo que con este código. Este código cuando inserto un valor en A me devuelve la hora y día en B pero solo hace eso.
No veo tan práctio el que a la hora de ir introduciendo datos te vaya poniendo la hora en base a macros, para eso mejor usa fórmulas, pero bueno esa es mi opinión, sinceramente tu código lo veo algo difícil de adaptar para lo que quieres hacer por lo que no me compromento a hacerlo. Solo te puedo ofrecer la solución que te dí anteriormente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas