Dos macros que se ejecutan al apretar enter

Necesito dos macros que hagan lo siguiente, la primera Cuando este posicionado en cualquier celda de la columna A y apreté enter me ponga la fecha de día. Y la segunda cuando estoy posicionado en la columna F y apreté enter me tire un aviso que diga intereses archivados. Al que me pueda ayudar le agradecería

1 respuesta

Respuesta
2

Hay 2 eventos para celdas: al seleccionarla o al modificarla.

Como parece que no vas a ingresar datos sino solo seleccionar la celda y dar Enter... entonces te sugiero el uso del evento SelectionChange.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'x Elsamatilde
If Target.Column = 1 Then
    Target.Value = Date
ElseIf Target.Column = 6 Then
    MsgBox "Intereses archivados."
End If
End Sub

El código se coloca en el objeto HOJA donde vayas a trabajar.

Probalo y luego me comentas. No olvides valorar la respuesta si el tema queda resuelto.

Gracias por tu ayuda Elsa pero te pregunto en el caso que quiera ingresar datos como  otra fecha es lo mismo

Otra cosa que me olvidé Elsa es la columna 1 y 6 pero a partir de la fila 4

'.... Columna A y apreté enter me ponga la fecha de día...

Si necesitabas la fecha del día Date estaba bien.

Si querés otra fecha tendrás que decidir de dónde la tomará ... por ejemplo:

Target.Value = Cdate([A1])

Para que sea a partir de fila 4 quedará así donde además te dejé 3 instrucciones para la fecha.... elegí la que sea más apropiada para tu caso y eliminá las otras 2.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'x Elsamatilde
If Target.Row < 4 Then Exit Sub
If Target.Column = 1 Then
    Target.Value = Date
    Target.Value = CDate([A1])
    Target.Value = CDate("10/01/2019")
ElseIf Target.Column = 6 Then
    MsgBox "Intereses archivados."
End If
End Sub

También te habrás dado cuenta que estando en la celda podés cambiar la fecha x otra.

Sdos y no olvides valorar la respuesta (por ser domingo solo vale un Excelente ;).

Elsa

Elsa me parece que me explique mal, lo que yo quiero es que cuando me posicione en una celda de la columna A y esta este vacía al apretar enter me tire la fecha del día y no como me lo mandaste que cuando me posicionó me pone directo la fecha.

Además cuando ya esta la fecha y yo la quiero cambiar por otra cualquiera (al no estar la celda vacía) me la acepté me explico

Te explicas bien pero con cuentagotas... Veamos:

'... Y apreté enter me ponga la fecha de día....' enviado en primer respuesta.

'... En el caso que quiera ingresar datos como otra fecha ...' enviado en segunda respuesta además del control de filas.

'... Y esta este vacía al apretar enter me tire la fecha del día...' a continuación va la 3er respuesta para este nuevo criterio.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'x Elsamatilde
If Target.Row < 4 Then Exit Sub
If Target.Column = 1 and isEmpty(Target) Then
    Target.Value = Date      'fecha del día
    'Target.Value = CDate([A1])      'si debe copiar fecha de otra celda
    'Target.Value = CDate("10/01/2019")  'si debe dejar una fecha fija
ElseIf Target.Column = 6 Then
    MsgBox "Intereses archivados."
End If
End Sub

Como te mencioné al inicio, las celdas tienen 2 eventos: al seleccionarla o al modificarla. Para tu caso el evento es el de selección.

Si entras a una celda con fecha no se modificará ... pero podrás modificarla o sobreescribirla.

En caso de que esté vacía colocará la fecha del día ... pero también podrás modificarla sobreescribiendo allí.

Sdos y por favor si necesitas agregar otras condiciones cerremos esta consulta (valorándola) e inicia una nueva con TODOS los detalles y aclaraciones.

elsa no te enojes pero cuando me posiciono en cualquier celda de la columna A ya me pone la fecha, y lo que quiero es que lo haga cuando apretó enter en las tres eventos que me mandaste hace lo mismo

No, no me enoja para nada. Lamento que no nos entendamos. De este lado solo podemos imaginar lo que tratan de hacer con la información que dejan.

... Cuando este posicionado en cualquier celda de la columna A y apreté enter me ponga la fecha de día...

Estuve imaginando que la fecha la querías en la celda desde la que sales con Enter. Parece que no es así. Y ahora ya no sé dónde quieres colocar la fecha ;)

Va de nuevo Elsa, espero ser más explícito esta vez, en la columna A a partir de la fila 4 me posicionó con el Mouse en cualquier celda desde la A4 hasta A1048576, correcto supongamos que elija la celda A10 al poner el cursor en A10 la celda sigue en blanco correcto, bien al apretar enter en A 10 tiene que aparecer la fecha del día y el cursor posicionarse en B10 correcto, si vuelvo apretar enter el cursor tiene que irá a C10 así hasta llegar a la columna 5 o sea la celda E10 ahí es donde al estar vacía y apretar enter me tiene que tirar el mensaje y posicionarse el cursor F10.

Luego suponiendo quiera hacer algún cambio por ejemplo en A10 que es donde esta la fecha del día, la cambien por cualquier otra la tome y al apretar enter salte a B10 espero puedas interpretarme Elsa espero tu respuesta mil gracias por tu comprensión

era columna 6 Elsa yo puse 5 es lo mismo toma la que quieras

Veo que interpreté correctamente cada solicitud. Te preparé un video para que observes el proceso con el evento Selection y en otra hoja asignando una nueva acción a la tecla Enter.

https://drive.google.com/open?id=1Cl382ZUf4blE4xAwmZ3iobQCMhPB6ruj 

No comenté allí algo que quizás es obvio: el avance del Enter está configurado hacia derecha desde las opciones de Excel:

Si vas a optar por la opción mostrada en la hoja 2 (cambiarle la acción a la tecla Enter), la macro 'fechita' debiera quedar así:

Sub fechita()
'evaluar en qué celda se estaba al presionar Enter
If ActiveCell.Row > 3 Then    'no se ejecuta en fila < 4
    If ActiveCell.Column = 1 Then
    'si está en col A coloca fecha si la celda está vacía y avanza a col B
        If IsEmpty(ActiveCell) Then ActiveCell.Value = Date
    ElseIf ActiveCell.Column = 6 Then
    'si está en col E muestra mensaje y se posiciona en col F (opcional)
        MsgBox "Intereses archivados."
    End If
End If
ActiveCell.Offset(0, 1).Select
End Sub

Sdos!

¡Gracias! Elsaaaa sos una geniai lo que está en la hoja 2 es lo que quería mil gracias x tu tiempo y atención te seguiré consultando beso grande

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas