Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Ejecutar una macro al escribir en una celda

801 views
Skip to first unread message

Rafa

unread,
Mar 8, 2002, 4:23:50 PM3/8/02
to
¿Cómo se podría ejecutar una macro al escribir una letra "A" en cualquier
celda de la columna A1?
Saludos
Rafa


Henry Sanchez

unread,
Mar 8, 2002, 11:27:41 PM3/8/02
to
Hola Rafa
Usa la instuccion Application.Onkey "A", "Nombre_de_la_Macro"

Saludos,
Henry
"Rafa" <rg...@airtel.net> wrote in message news:3c89...@news.airtel.net...

Rafa

unread,
Mar 9, 2002, 3:16:47 AM3/9/02
to
Gracias Henry, pero necesito que se active la macro en el momento de
escribir la letra "A" pero sólo en cualquier celda de la columna A1. Si se
escribe en cualquier otra celda no se ejecutaría dicha macro.
¿Dónde tendría que colocar esta instrucción?

Saludos
Rafa

"Henry Sanchez" <henr...@hotmail.com> escribió en el mensaje
news:eW1B#NyxBHA.2112@tkmsftngp02...

Henry Sanchez

unread,
Mar 9, 2002, 11:58:33 AM3/9/02
to
Hola Rafa
Coloca la instruccion
Application.Onkey "A", "Nombre_de_la_Macro"
en el procediminto de evento Workbook_Open ( ) del libro
de trabajo
En cuanto a que la macro solo se ejecute para cambios en
la columna A, deberias colocar una instruccion tipo If al
principio de la macro para que evalue la columna de la
celda activa

Saludos,
Henry
>-----Mensaje original-----

>.
>

Rafa

unread,
Mar 10, 2002, 5:45:17 AM3/10/02
to
Gracias Henry
Estupendo funciona, pero me encuentro con dos problemillas, uno de ellos es
que al escribir la letra A, efectivamente se ejecuta la macro, pero no la
escribe; lo he solucionado haciendo que la primera instrucción de la macro
sea "escribir A" (ActiveCell.FormulaR1C1 = "A")
El otro problema es que esta letra A se tiene que escribir desde un
desplegable con varias opciones (una de ellas la "A") y, en este caso, la
instrucción no se entera que se ha escrito la A y no se ejecuta la macro.
Este desplegable lo he hecho con Validación de datos, con la opción lista.
¿Habría que cambiar la instrucción que me enviastes?

Saludos
Rafa


"Henry Sanchez" <henr...@hotmail.com> escribió en el mensaje

news:193801c1c78b$a5d5d340$9be62ecf@tkmsftngxa03...

Henry Sanchez

unread,
Mar 10, 2002, 8:53:30 PM3/10/02
to
Hola Rafa
Usa la instruccion:
If Target.Value = "A" then Call Nombre_Macro
dentro del Procedimiento de Evento Change de la hoja de trabajo.

Saludos,
Henry

"Rafa" <rg...@airtel.net> wrote in message news:3c8b...@news.airtel.net...

Rafa

unread,
Mar 14, 2002, 3:10:30 PM3/14/02
to
Henry
Pienso que por error me has enviado el mismo archivo que te envié yo, pues
no veo modificación alguna y le ocurre el mismo problema.
Saludos
Rafa

"Henry Sanchez" <henr...@hotmail.com> escribió en el mensaje

news:eUoDIG4yBHA.2772@tkmsftngp07...
> Te devuelvo el archivo con el problema resuelto
> Saludos,
> Henry
>
> "Rafa" <r...@airtel.net> wrote in message news:3c8d...@news.airtel.net...
> > Hola de nuevo Henry
> > Ayer te respondí que todo perfecto, pero ahora veo un ligero problema
que
> no
> > acabo de resolver con este tema de activar
> > una macro al escribir la letra A en una celda.
> > El problema viene cuando selecciono varias celdas y las borro, por
> ejemplo,
> > o copiar y pegar, pero siempre que haya
> > varias celdas seleccionadas.
> > Te envío una pequeña hoja para que veas lo que te cuento.
> >
> > Un saludo
> > Rafa

Henry Sanchez

unread,
Mar 14, 2002, 5:15:53 PM3/14/02
to
Hola Rafa
Es posible que te halla enviado el mismo archivo por error, como no tengo
instalado Microsoft Excel en el equipo que estoy usando ahora, te voy a
colocar la correccionn dentro de este mensaje
En el procedimiento de Evento Change de la hoja de trabajo
Sub WorkSheet_Change(Target As Range)
If Target.Cells.Count = 1 Then
Aca va la instruccion que tenias: si mal no recuerdo era
If Target.Value="A" Then Call ...........
End If
End Sub

Saludos,
Henry


"Rafa" <rg...@airtel.net> wrote in message news:3c91...@news.airtel.net...

Rafa

unread,
Mar 14, 2002, 6:16:41 PM3/14/02
to
Perfecto, resuelto ese problema, perdona que sea un poco pesado, pero veo
que se ejecuta la macro justo después de dar a la tecla "Enter" y no antes,
y eso me origina otro inconveniente:
Lo que necesito es que al seleccionar la letra A desde un desplegable (hecho
con una lista de Validación), entre otras cosas, el cursor se desplace dos
celdas hacia la derecha desde la celda donde se escribió la "A", y con tu
solución, así lo hace.
Pero si en lugar de seleccionar la letra "A" de las opciones del desplegable
la escribo directamente, al dar al "Enter", la celda activa sería la de
abajo (o la de la derecha según se elija en opciones) y a partir de aquí se
iría dos celdas a la derecha, y como verás el resultado es diferente al
primer caso.
Yo había solucionado el problema inicial con:
If ActiveCell.Value = "T" Then Call Macro_1
pero de esta forma solo funciona al seleccionar la letra "A" del
desplegable, pero en cambio no funciona al escribirla directamente.
Se me ocurre si habría alguna forma de escribir alguna instrucción en la
macro que le indicase que volviera al punto de partida (a la celda donde se
escribió la A) para que, a partir de ahí, se desplazara dos celdas a la
derecha, pero no acabo de encontrar la solución.
Saludos
Rafa

"Henry Sanchez" <henr...@hotmail.com> escribió en el mensaje

news:Om1tlY6yBHA.2520@tkmsftngp02...

Henry Sanchez

unread,
Mar 15, 2002, 11:22:55 PM3/15/02
to
Hola Rafa
Debes modificar la Macro_1 de la siguiente manera:
1. En la linea donde se declara el Nombre del procedimiento añadir un
argumento:
Public Sub Macro_1 (celda as Range)

2. Dentro del cuerpo de la Macro, reemplaza ActiveCell por celda

3. Cuando llames a la Macro desde el procedimiento de evento Change de la
hoja de trabajo, debes incluir el argumento:
If ........ Then Call Macro_1 Target

Eso es todo.
Saludos,
Henry

"Rafa" <rg...@airtel.net> wrote in message news:3c91...@news.airtel.net...

0 new messages