Una macro que al introducir un dato en una celda, automáticamente ejecute una macro creada

Necesito una macro que al ingresar un dato en la celda "F5" de la hoja "Ingreso" y darle ENTER se ejecute automáticamente una macro llamada "ActualizarPaciente"

Respuesta
1

En tu libro haz Alt+F11, ve al código de la hoja INGRESO (botón derecho, view code), y pone este código:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range
    Set KeyCells = Range("f5")
    If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
Call ActualizarPaciente
    End If
End Sub

¿Me puedes explicar línea por línea lo que hace esa macro?

No del todo... Pero hagamos un intento...

De movida, la mayoria de las cosas que tengo armadas, ya las hizo alguien antes. El asunto es saber que existen y donde encontrar la forma correcta de escribirlas.

En este caso, yo saque el codigo de algun lado y lo tengo puesto en un archivo mio.

Aca: https://msdn.microsoft.com/en-us/library/office/ff839775.aspx hay varios ejemplos utiles.

Asi como existe esta, que se corre sola cuando hay un cambie en la hoja, hay otras que se corren solas cuando pasa alguna otra cosa. Por ejemplo: Al abrir, antes de guardar y asi.

Aca abajo agrego en el codigo mi pretension de explicar lo mas posible.

Private Sub Worksheet_Change(ByVal Target As Range)
'Esta macro se corre cuando hay un cambio en la hoja
'Defino KEYCELLS es una variable de tipo Rango de celdas.
    Dim KeyCells As Range
'Seteo KEYCELLS como una celda en particular: F5. 
'Podria ser un rango mucho mas amplio, por ejemplo F5:Z100
    Set KeyCells = Range("f5")
'La clave parece estar en esta instruccion que solo uso en aqui.
'No tengo mas experiencia en el tema, pero parece que toma valores de dos vectores y los compara (Keycells, con el que acabas de tocas?)
    If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
'Si la interseccion da NADA, entonces no hace nada. (TERMINA)
'Si la interseccion da ALGO (NO DA VACIO, fijate que hay doble negacion Not y Nothing, entonces hace lo que siguiente:
'Llama a la macro que vos querias
Call ActualizarPaciente
    End If
End Sub

1 respuesta más de otro experto

Respuesta
1

H o l a:

Te anexo la macro para los eventos de la hoja

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Por.Dante Amor
    'si modificas la celda F5
    If Target.Address(False, False) = "F5" Then
        ActualizarPaciente
    End If
End Sub

s a l u d o s

No se por que, pero no me funciona. No se si tenga que ver por que la celda F5 esta combinada desde F5 hasta M5

Cambia la macro por esta:

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    'si modificas la celda F5
    If Target.Address(False, False) = "F5" Then
        ActualizarPaciente
    End If
End Sub

s a l u d o s

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas