Ejecutar automaticamente una macro

03/11/2005 - 19:48 por nanchoguti | Informe spam
Buenas tardes.

Tengo una hoja abierta, necesito ejecutar una macro automaticamente cuando
la celda B5 tome el valor 215.

Que el usuario no tenga que ejecutarla manualmente, cómo se hace ?.

Saludos y muchas gracias

Nancho

Preguntas similare

Leer las respuestas

#1 Henry Sanchez
03/11/2005 - 20:11 | Informe spam
Hola Nancho,
Puedes hacer algo como esto en el procedimiento de evento Change de la hoja
de trabajo:
Public Sub Worksheet_Change(Target as Range)
if target.address="$B$5" then
if target.value!5 then MiMacro
Endif
End Sub


Saludos,
Henry

"Nancho" escribió:

Buenas tardes.

Tengo una hoja abierta, necesito ejecutar una macro automaticamente cuando
la celda B5 tome el valor 215.

Que el usuario no tenga que ejecutarla manualmente, cómo se hace ?.

Saludos y muchas gracias

Nancho


Respuesta Responder a este mensaje
#2 nanchoguti
03/11/2005 - 22:35 | Informe spam
Henry muchas gracias por responder.

Me saca el siguiente mensaje, al dar enter en una celda de la hoja :
Error de compilación:
La declaración del procedimiento no coincide con la descripción del evento
o el procedimiento que tiene el mismo nombre.

Que puede ser.
Lo que hice fue copiar tu codigo en el editor de Vba y escribir mi macro
en modulos.
Mi macro está validada por que solamente hace por ahora lo siguiente :
msgbox ("probando macro automatica")




Henry Sanchez wrote:

Hola Nancho,
Puedes hacer algo como esto en el procedimiento de evento Change de la hoja
de trabajo:
Public Sub Worksheet_Change(Target as Range)
if target.address="$B$5" then
if target.value!5 then MiMacro
Endif
End Sub


Saludos,
Henry

"Nancho" escribió:

> Buenas tardes.
>
> Tengo una hoja abierta, necesito ejecutar una macro automaticamente cuando
> la celda B5 tome el valor 215.
>
> Que el usuario no tenga que ejecutarla manualmente, cómo se hace ?.
>
> Saludos y muchas gracias
>
> Nancho
>
>
Respuesta Responder a este mensaje
#3 Henry Sanchez
04/11/2005 - 18:51 | Informe spam
Hola Nancho,

El codigo que te envie debes escribirlo en el procedimiento de evento del
mismo nombre en la hoja de trabajo.

Ubica esta hoja en el explorador de proyectos del editor de VBA, haz dobre
click en la hoja de trabajo y listo, ya estas ubicado en el editor del modulo
adecuado. Ahora selecciona el procedimiento de evento en el cuadro combinado
que aparece en la parte superior.

Coloca el codigo que te envie en el procedimiento de evento Change de la
hoja de trabajo.

Saludos,

Henry


"Nancho" escribió:


Henry muchas gracias por responder.

Me saca el siguiente mensaje, al dar enter en una celda de la hoja :
Error de compilación:
La declaración del procedimiento no coincide con la descripción del evento
o el procedimiento que tiene el mismo nombre.

Que puede ser.
Lo que hice fue copiar tu codigo en el editor de Vba y escribir mi macro
en modulos.
Mi macro está validada por que solamente hace por ahora lo siguiente :
msgbox ("probando macro automatica")




Henry Sanchez wrote:

> Hola Nancho,
> Puedes hacer algo como esto en el procedimiento de evento Change de la hoja
> de trabajo:
> Public Sub Worksheet_Change(Target as Range)
> if target.address="$B$5" then
> if target.value!5 then MiMacro
> Endif
> End Sub


> Saludos,
> Henry

> "Nancho" escribió:

> > Buenas tardes.
> >
> > Tengo una hoja abierta, necesito ejecutar una macro automaticamente cuando
> > la celda B5 tome el valor 215.
> >
> > Que el usuario no tenga que ejecutarla manualmente, cómo se hace ?.
> >
> > Saludos y muchas gracias
> >
> > Nancho
> >
> >



Respuesta Responder a este mensaje
#4 honorato gonzalez gonzalez
05/11/2005 - 06:53 | Informe spam
estoy intentando lo mismo, pero no me sale, puedes explicarme mas detallado
por favor Henry, que es cuadro combinado, solo esta workshet y change

Ahora selecciona el procedimiento de evento en el cuadro combinado
que aparece en la parte superior



Honorato


"Henry Sanchez" escribió en el
mensaje news:
Hola Nancho,

El codigo que te envie debes escribirlo en el procedimiento de evento del
mismo nombre en la hoja de trabajo.

Ubica esta hoja en el explorador de proyectos del editor de VBA, haz dobre
click en la hoja de trabajo y listo, ya estas ubicado en el editor del
modulo
adecuado. Ahora selecciona el procedimiento de evento en el cuadro
combinado
que aparece en la parte superior.

Coloca el codigo que te envie en el procedimiento de evento Change de la
hoja de trabajo.

Saludos,

Henry


"Nancho" escribió:


Henry muchas gracias por responder.

Me saca el siguiente mensaje, al dar enter en una celda de la hoja :
Error de compilación:
La declaración del procedimiento no coincide con la descripción del
evento
o el procedimiento que tiene el mismo nombre.

Que puede ser.
Lo que hice fue copiar tu codigo en el editor de Vba y escribir mi macro
en modulos.
Mi macro está validada por que solamente hace por ahora lo siguiente :
msgbox ("probando macro automatica")




Henry Sanchez wrote:

> Hola Nancho,
> Puedes hacer algo como esto en el procedimiento de evento Change de la
> hoja
> de trabajo:
> Public Sub Worksheet_Change(Target as Range)
> if target.address="$B$5" then
> if target.value!5 then MiMacro
> Endif
> End Sub


> Saludos,
> Henry

> "Nancho" escribió:

> > Buenas tardes.
> >
> > Tengo una hoja abierta, necesito ejecutar una macro automaticamente
> > cuando
> > la celda B5 tome el valor 215.
> >
> > Que el usuario no tenga que ejecutarla manualmente, cómo se hace ?.
> >
> > Saludos y muchas gracias
> >
> > Nancho
> >
> >



Respuesta Responder a este mensaje
#5 Héctor Miguel
05/11/2005 - 08:57 | Informe spam
hola, chicos !

Nancho escribio en el mensaje ...
... ejecutar una macro automaticamente cuando la celda B5 tome el valor 215 [...]



1) el codigo que expone Henry [al parecer] lo ha escrito 'de memoria' y...
contiene una 'incongruencia' [con el modelo de objetos de excel] y una observacion...
a) el argumento 'Target' necesita ser pasado por valor [no por referencia que es 'por omision']
b) el evento -generalmente- es 'preferible' mantenerlo como 'priivado' [no como 'Public']

2) una forma 'facil' de obtener acceso al modulo 'de clase' de la hoja que se necesita 'controlar'...
es por medio de un 'click-derecho' sobre el nombre de la hoja [en la interfase de usuario]
[probablemente] el evento que se muestre 'por omision' [segun la version de excel] sea...
en el moduo de codigo de 'esa' hoja ==Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
< una linea en blanco 'preparada' para recibir instrucciones > :))
End Sub

3) la propuesta de Henry 'debiera' ser copiada a dicho modulo de la siguiente forma...
en el moduo de codigo de 'esa' hoja ==Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$5" Then If Target = 215 Then MiMacro
End Sub

4) el codigo anterior 'supone' que la celda 'B5' cambia por accion 'directa' [ya sea del usuario u otro codigo]
[es decir]... si el valor de la celda cambia por 'efectos/resultado/...' de una formula...
-> el evento '_change' NO se dispara [con lo que el codigo o la macro 'derivada' NO se ejecutaria] :-(

5) si se trata de cambios [en el valor de la celda] por alguna formula, el evento que puede 'detectar' las variaciones es...
en el modulo de codigo de 'esa' hoja ==Private Sub Worksheet_Calculate()
If Range("b5") = 215 Then MiMacro
End Sub

si cualquier duda [o informacion adicional]... comentan ?
saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida