Macro ingresar Fecha y Hora en una celda y que quede fija

Necesito una macro que cuando se ingrese un dato en una celda, se coloque fecha, hora y segundo, y que este dato quede fijo en la celda. Para ello, que siempre se coloque la Fecha, Hora y Segundo en la ultima celda vacía de la columna B. Me explico:

Ingreso un dato en A1, en B1 debe de salir 26/02/2018 10:36:58

Ingreso un dato en A2, en B2 debe de salir 26/02/2018 10:36:59

Ingreso un dato en A3, en B3 debe de salir 26/02/2018 10:37:00

1 Respuesta

Respuesta
1

Pon la siguiente macro en los eventos de tu hoja

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, Columns("A")) Is Nothing Then
        If Target.Count > 100 Then Exit Sub
        For Each c In Target
            If c.Value = "" Then
                c.Offset(0, 1) = ""
            Else
                c.Offset(0, 1) = Now
            End If
        Next
    End If
End Sub

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. En el panel del lado derecho copia la macro


Cambia en la macro "A" por la columna donde vas a poner el dato, en automático te pondrá en la columna de la derecha la fecha y hora.


.

.

Hola Dante Amor te agradezco por la pronta respuesta. Inserte el código que me enviaste. No me resulto. Complemento la información, al presionar "Ingresar Pedido" debe de ingresar todos los datos (la macro para ello ya esta y funciona), debe de ingresar Fecha, Hora y Segundo en la columna "I" y quedar fija. Adjunto código fuente.

Private Sub CommandButton4_Click()
'Ingresar datos
    pedido = TextBox1.value
    If pedido = "" Then
        MsgBox "Debes capturar un número de pedido"
        TextBox1.SetFocus
        Exit Sub
    End If
    If IsNumeric(pedido) Then pedido = Val(pedido)
    Set h = Sheets("Report")
    Set r = h.Columns("A")
    Set b = r.Find(pedido, LookAt:=xlWhole)
    If Not b Is Nothing Then
        Celda = b.Address
        Do
            'detalle
            If h.Cells(b.Row, "B") = "" Then
                h.Cells(b.Row, "B") = ComboBox4.value 'Columna B Courier
                h.Cells(b.Row, "C") = ComboBox2.value 'Columna C Placa
                h.Cells(b.Row, "D") = TextBox7.value 'Columna D Nombre del Transportista
                h.Cells(b.Row, "E") = TextBox1.value 'Columna E N° de Pedido
                h.Cells(b.Row, "F") = TextBox5.value 'Columna E GR Hija
                TextBox2 = Sheets("Datos").Range("E2")
            Else
                MsgBox "Pedido ya existe"
                TextBox1.value = ""
        TextBox1.value = ""
        TextBox5.value = ""
        TextBox1.SetFocus
                Exit Sub
            End If
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> Celda
        TextBox1.value = ""
        TextBox1.value = ""
        TextBox5.value = ""
        TextBox1.SetFocus
    Else
        MsgBox "El pedido no existe"
        TextBox1.value = ""
        TextBox1.value = ""
        TextBox5.value = ""
        TextBox1.SetFocus
    End If
    If Not Intersect(Target, Columns("I")) Is Nothing Then
        If Target.Count > 100 Then Exit Sub
        For Each c In Target
            If c.value = "" Then
                c.Offset(0, 1) = ""
            Else
                c.Offset(0, 1) = Now
            End If
        Next
    End If
End Sub

En mis indicaciones puse esto:

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. En el panel del lado derecho copia la macro

Tienes que adaptar mi código para que funcione en el userform.

Te anexo las adecuaciones

Private Sub CommandButton4_Click()
'Ingresar datos
    pedido = TextBox1.Value
    If pedido = "" Then
        MsgBox "Debes capturar un número de pedido"
        TextBox1.SetFocus
        Exit Sub
    End If
    If IsNumeric(pedido) Then pedido = Val(pedido)
    Set h = Sheets("Report")
    Set r = h.Columns("A")
    Set b = r.Find(pedido, LookAt:=xlWhole)
    If Not b Is Nothing Then
        Celda = b.Address
        Do
            'detalle
            If h.Cells(b.Row, "B") = "" Then
                h.Cells(b.Row, "B") = ComboBox4.Value 'Columna B Courier
                h.Cells(b.Row, "C") = ComboBox2.Value 'Columna C Placa
                h.Cells(b.Row, "D") = TextBox7.Value 'Columna D Nombre del Transportista
                h.Cells(b.Row, "E") = TextBox1.Value 'Columna E N° de Pedido
                h.Cells(b.Row, "F") = TextBox5.Value 'Columna E GR Hija
                h.Cells(b.Row, "I") = Now            'Fecha y hora
                TextBox2 = Sheets("Datos").Range("E2")
            Else
                MsgBox "Pedido ya existe"
                TextBox1.Value = ""
                TextBox1.Value = ""
                TextBox5.Value = ""
                TextBox1.SetFocus
                Exit Sub
            End If
            Set b = r.FindNext(b)
        Loop While Not b Is Nothing And b.Address <> Celda
        TextBox1.Value = ""
        TextBox1.Value = ""
        TextBox5.Value = ""
        TextBox1.SetFocus
    Else
        MsgBox "El pedido no existe"
        TextBox1.Value = ""
        TextBox1.Value = ""
        TextBox5.Value = ""
        TextBox1.SetFocus
    End If
End Sub

IMPORTANTE! : tienes que poner en la columna I el formato de fecha y hora

Prueba y me comentas.

.

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas