Macro - ejecutar según contenido de celda

18/03/2005 - 19:51 por Mbaeijhapa | Informe spam
Hola amigos,
Tengo dos macros en una misma planilla. Quisiera saber como puedo hacer para
ejecutar una u otra conforme al resultado de una celda (si la celda dice "SI"
que se ejecute Macro1, si dice "NO" que se ejecute Macro2.
Gracias.

Mbaeijhapa.

Preguntas similare

Leer las respuestas

#6 KL
19/03/2005 - 21:02 | Informe spam
...me he olividado de la cuarta causa posible - que alguno de los macros (o
ambos) que llamas no funcione bien


Un saludo,
KL

"KL" wrote in message
news:%
Entonces el problema puede tener tres posibles causas:

1) que la celda [A1] de la HOJA ACTIVA no contiene ninguno de los valores
esperados o los tiene mal puestos (p.ej. con espacios)

2) que las otras macros se encuentren en los modulos de hoja, formulario o
libro q no son desde donde los llamas. Para que los macros puedan ser
llamados por otro macro deben estar en un modulo normal (p.ej. Modulo1) y
no ser Private Sub, o bien estar en el mismo modulo de clase (hoja,
formulario o libro) que el macro que los llama.

3) que esperes q el macro se dispare solo al cambiar los valores en las
celdas. Si eso es lo q quieres tendras q asignar tu macro a algun evento.
Lo mas logico seria depositar el codigo dentro del evento Worksheet_Change
de la hoja que contiene la celda con SI o NO. O sea:

Private Sub Worksheet_Change(ByVal Target As Range)
Select Case UCase(ActiveSheet.Range("A1").Value)
Case "SI": Call Macro1
Case "NO": Call Macro2
End Select
End Sub

Saludos,
KL

"Mbaeijhapa" wrote in message
news:
KL, complemento mi nota,
En lugar de Macro1 puse "Si_Dis" (nombre de una de las macros)
Y en lugar de Macro2 puse "No_Dis" (nombre de la otra macro)
Se entiende ?
Gracias.
Mbaeijhapa.



"KL" escribió:

Hola Mbaeijhapa,

Select Case UCase(ActiveSheet.Range("A1").Value)
Case "SI": Call Macro1
Case "NO": Call Macro2
End Select

donde Macro1 y Macro2 son los nombres de los macros a llamar (sin los
parentesis).

Saludos,
KL

"Mbaeijhapa" wrote in message
news:
> Hola amigos,
> Tengo dos macros en una misma planilla. Quisiera saber como puedo
> hacer
> para
> ejecutar una u otra conforme al resultado de una celda (si la celda
> dice
> "SI"
> que se ejecute Macro1, si dice "NO" que se ejecute Macro2.
> Gracias.
>
> Mbaeijhapa.
>









Respuesta Responder a este mensaje
#7 Mbaeijhapa
19/03/2005 - 21:27 | Informe spam
KL, disculpa por no responderte con rápidez, pero estaba probando las macros.
Te comento:
- Las dos macros que tengo funcionan correctamente, llamandolas
individualmente a una o a otra.
- Los códigos que me has enviado las cree con una macro
ubicándola en el mismo módulo que las dos anteriores.
- Tambien hice un nuevo archivo escribiendo las macros de
ejemplos q me enviaste, (MacroPrincipal, Macro1, Macro2). Las macros 1 y 2
funcionan indiv idualmente, pero cuando ejecuto la MacroPrincipal, no hace
nada (tampoco me dá ningún error, lo mismo pasa cuando la utilizo con las
macros creada por mi).

Creo copiar las instrucciones tal cual como me lo envías pero no funciona.
Debe haber algo q estoy haciendo mal, pero no me doy cuenta.
Si puedes probar el ejemplo que me enviaste, te lo agradeceré.
Gracias. Espero tu comentario.
Mbaeijhapa.

Sub MacroPrincipal()
'
Select Case UCase(ActiveSheet.Range("A1").Value)
Case "Si": Call [Macro1]
Case "No": Call [Macro2]
End Select
End Sub


Sub Macro1()
'
MsgBox "Acceso Encendido"
End Sub

Sub Macro2()

MsgBox "Acceso denegado"

End Sub



"KL" escribió:

me he olividado de la cuarta causa posible - que alguno de los macros (o
ambos) que llamas no funcione bien


Un saludo,
KL

"KL" wrote in message
news:%
> Entonces el problema puede tener tres posibles causas:
>
> 1) que la celda [A1] de la HOJA ACTIVA no contiene ninguno de los valores
> esperados o los tiene mal puestos (p.ej. con espacios)
>
> 2) que las otras macros se encuentren en los modulos de hoja, formulario o
> libro q no son desde donde los llamas. Para que los macros puedan ser
> llamados por otro macro deben estar en un modulo normal (p.ej. Modulo1) y
> no ser Private Sub, o bien estar en el mismo modulo de clase (hoja,
> formulario o libro) que el macro que los llama.
>
> 3) que esperes q el macro se dispare solo al cambiar los valores en las
> celdas. Si eso es lo q quieres tendras q asignar tu macro a algun evento.
> Lo mas logico seria depositar el codigo dentro del evento Worksheet_Change
> de la hoja que contiene la celda con SI o NO. O sea:
>
> Private Sub Worksheet_Change(ByVal Target As Range)
> Select Case UCase(ActiveSheet.Range("A1").Value)
> Case "SI": Call Macro1
> Case "NO": Call Macro2
> End Select
> End Sub
>
> Saludos,
> KL
>
> "Mbaeijhapa" wrote in message
> news:
>> KL, complemento mi nota,
>> En lugar de Macro1 puse "Si_Dis" (nombre de una de las macros)
>> Y en lugar de Macro2 puse "No_Dis" (nombre de la otra macro)
>> Se entiende ?
>> Gracias.
>> Mbaeijhapa.
>>
>>
>>
>> "KL" escribió:
>>
>>> Hola Mbaeijhapa,
>>>
>>> Select Case UCase(ActiveSheet.Range("A1").Value)
>>> Case "SI": Call Macro1
>>> Case "NO": Call Macro2
>>> End Select
>>>
>>> donde Macro1 y Macro2 son los nombres de los macros a llamar (sin los
>>> parentesis).
>>>
>>> Saludos,
>>> KL
>>>
>>> "Mbaeijhapa" wrote in message
>>> news:
>>> > Hola amigos,
>>> > Tengo dos macros en una misma planilla. Quisiera saber como puedo
>>> > hacer
>>> > para
>>> > ejecutar una u otra conforme al resultado de una celda (si la celda
>>> > dice
>>> > "SI"
>>> > que se ejecute Macro1, si dice "NO" que se ejecute Macro2.
>>> > Gracias.
>>> >
>>> > Mbaeijhapa.
>>> >
>>>
>>>
>>>
>
>



Respuesta Responder a este mensaje
#8 KL
19/03/2005 - 21:38 | Informe spam
Hmm, a mi funcionan a la perfeccion. ?Puedes enviarme tu fichero para ahorar
tiempo dado que te corre prisa?

KL

"Mbaeijhapa" wrote in message
news:
KL, disculpa por no responderte con rápidez, pero estaba probando las
macros.
Te comento:
- Las dos macros que tengo funcionan correctamente,
llamandolas
individualmente a una o a otra.
- Los códigos que me has enviado las cree con una macro
ubicándola en el mismo módulo que las dos anteriores.
- Tambien hice un nuevo archivo escribiendo las macros de
ejemplos q me enviaste, (MacroPrincipal, Macro1, Macro2). Las macros 1 y 2
funcionan indiv idualmente, pero cuando ejecuto la MacroPrincipal, no hace
nada (tampoco me dá ningún error, lo mismo pasa cuando la utilizo con las
macros creada por mi).

Creo copiar las instrucciones tal cual como me lo envías pero no funciona.
Debe haber algo q estoy haciendo mal, pero no me doy cuenta.
Si puedes probar el ejemplo que me enviaste, te lo agradeceré.
Gracias. Espero tu comentario.
Mbaeijhapa.

Sub MacroPrincipal()
'
Select Case UCase(ActiveSheet.Range("A1").Value)
Case "Si": Call [Macro1]
Case "No": Call [Macro2]
End Select
End Sub


Sub Macro1()
'
MsgBox "Acceso Encendido"
End Sub

Sub Macro2()

MsgBox "Acceso denegado"

End Sub



"KL" escribió:

me he olividado de la cuarta causa posible - que alguno de los macros
(o
ambos) que llamas no funcione bien


Un saludo,
KL

"KL" wrote in message
news:%
> Entonces el problema puede tener tres posibles causas:
>
> 1) que la celda [A1] de la HOJA ACTIVA no contiene ninguno de los
> valores
> esperados o los tiene mal puestos (p.ej. con espacios)
>
> 2) que las otras macros se encuentren en los modulos de hoja,
> formulario o
> libro q no son desde donde los llamas. Para que los macros puedan ser
> llamados por otro macro deben estar en un modulo normal (p.ej. Modulo1)
> y
> no ser Private Sub, o bien estar en el mismo modulo de clase (hoja,
> formulario o libro) que el macro que los llama.
>
> 3) que esperes q el macro se dispare solo al cambiar los valores en las
> celdas. Si eso es lo q quieres tendras q asignar tu macro a algun
> evento.
> Lo mas logico seria depositar el codigo dentro del evento
> Worksheet_Change
> de la hoja que contiene la celda con SI o NO. O sea:
>
> Private Sub Worksheet_Change(ByVal Target As Range)
> Select Case UCase(ActiveSheet.Range("A1").Value)
> Case "SI": Call Macro1
> Case "NO": Call Macro2
> End Select
> End Sub
>
> Saludos,
> KL
>
> "Mbaeijhapa" wrote in message
> news:
>> KL, complemento mi nota,
>> En lugar de Macro1 puse "Si_Dis" (nombre de una de las macros)
>> Y en lugar de Macro2 puse "No_Dis" (nombre de la otra macro)
>> Se entiende ?
>> Gracias.
>> Mbaeijhapa.
>>
>>
>>
>> "KL" escribió:
>>
>>> Hola Mbaeijhapa,
>>>
>>> Select Case UCase(ActiveSheet.Range("A1").Value)
>>> Case "SI": Call Macro1
>>> Case "NO": Call Macro2
>>> End Select
>>>
>>> donde Macro1 y Macro2 son los nombres de los macros a llamar (sin los
>>> parentesis).
>>>
>>> Saludos,
>>> KL
>>>
>>> "Mbaeijhapa" wrote in message
>>> news:
>>> > Hola amigos,
>>> > Tengo dos macros en una misma planilla. Quisiera saber como puedo
>>> > hacer
>>> > para
>>> > ejecutar una u otra conforme al resultado de una celda (si la celda
>>> > dice
>>> > "SI"
>>> > que se ejecute Macro1, si dice "NO" que se ejecute Macro2.
>>> > Gracias.
>>> >
>>> > Mbaeijhapa.
>>> >
>>>
>>>
>>>
>
>



Respuesta Responder a este mensaje
#9 KL
19/03/2005 - 21:44 | Informe spam
Si introduces Sí (con acento) - ese puede ser el problema el macro esta
escrito para Si sin acento.

KL


"Mbaeijhapa" wrote in message
news:
KL, disculpa por no responderte con rápidez, pero estaba probando las
macros.
Te comento:
- Las dos macros que tengo funcionan correctamente,
llamandolas
individualmente a una o a otra.
- Los códigos que me has enviado las cree con una macro
ubicándola en el mismo módulo que las dos anteriores.
- Tambien hice un nuevo archivo escribiendo las macros de
ejemplos q me enviaste, (MacroPrincipal, Macro1, Macro2). Las macros 1 y 2
funcionan indiv idualmente, pero cuando ejecuto la MacroPrincipal, no hace
nada (tampoco me dá ningún error, lo mismo pasa cuando la utilizo con las
macros creada por mi).

Creo copiar las instrucciones tal cual como me lo envías pero no funciona.
Debe haber algo q estoy haciendo mal, pero no me doy cuenta.
Si puedes probar el ejemplo que me enviaste, te lo agradeceré.
Gracias. Espero tu comentario.
Mbaeijhapa.

Sub MacroPrincipal()
'
Select Case UCase(ActiveSheet.Range("A1").Value)
Case "Si": Call [Macro1]
Case "No": Call [Macro2]
End Select
End Sub


Sub Macro1()
'
MsgBox "Acceso Encendido"
End Sub

Sub Macro2()

MsgBox "Acceso denegado"

End Sub



"KL" escribió:

me he olividado de la cuarta causa posible - que alguno de los macros
(o
ambos) que llamas no funcione bien


Un saludo,
KL

"KL" wrote in message
news:%
> Entonces el problema puede tener tres posibles causas:
>
> 1) que la celda [A1] de la HOJA ACTIVA no contiene ninguno de los
> valores
> esperados o los tiene mal puestos (p.ej. con espacios)
>
> 2) que las otras macros se encuentren en los modulos de hoja,
> formulario o
> libro q no son desde donde los llamas. Para que los macros puedan ser
> llamados por otro macro deben estar en un modulo normal (p.ej. Modulo1)
> y
> no ser Private Sub, o bien estar en el mismo modulo de clase (hoja,
> formulario o libro) que el macro que los llama.
>
> 3) que esperes q el macro se dispare solo al cambiar los valores en las
> celdas. Si eso es lo q quieres tendras q asignar tu macro a algun
> evento.
> Lo mas logico seria depositar el codigo dentro del evento
> Worksheet_Change
> de la hoja que contiene la celda con SI o NO. O sea:
>
> Private Sub Worksheet_Change(ByVal Target As Range)
> Select Case UCase(ActiveSheet.Range("A1").Value)
> Case "SI": Call Macro1
> Case "NO": Call Macro2
> End Select
> End Sub
>
> Saludos,
> KL
>
> "Mbaeijhapa" wrote in message
> news:
>> KL, complemento mi nota,
>> En lugar de Macro1 puse "Si_Dis" (nombre de una de las macros)
>> Y en lugar de Macro2 puse "No_Dis" (nombre de la otra macro)
>> Se entiende ?
>> Gracias.
>> Mbaeijhapa.
>>
>>
>>
>> "KL" escribió:
>>
>>> Hola Mbaeijhapa,
>>>
>>> Select Case UCase(ActiveSheet.Range("A1").Value)
>>> Case "SI": Call Macro1
>>> Case "NO": Call Macro2
>>> End Select
>>>
>>> donde Macro1 y Macro2 son los nombres de los macros a llamar (sin los
>>> parentesis).
>>>
>>> Saludos,
>>> KL
>>>
>>> "Mbaeijhapa" wrote in message
>>> news:
>>> > Hola amigos,
>>> > Tengo dos macros en una misma planilla. Quisiera saber como puedo
>>> > hacer
>>> > para
>>> > ejecutar una u otra conforme al resultado de una celda (si la celda
>>> > dice
>>> > "SI"
>>> > que se ejecute Macro1, si dice "NO" que se ejecute Macro2.
>>> > Gracias.
>>> >
>>> > Mbaeijhapa.
>>> >
>>>
>>>
>>>
>
>



Respuesta Responder a este mensaje
#10 KL
19/03/2005 - 21:47 | Informe spam
Si introduces Sí (con acento) - ese puede ser el problema el macro esta
escrito para Si sin acento.

KL


"Mbaeijhapa" wrote in message
news:
KL, disculpa por no responderte con rápidez, pero estaba probando las
macros.
Te comento:
- Las dos macros que tengo funcionan correctamente,
llamandolas
individualmente a una o a otra.
- Los códigos que me has enviado las cree con una macro
ubicándola en el mismo módulo que las dos anteriores.
- Tambien hice un nuevo archivo escribiendo las macros de
ejemplos q me enviaste, (MacroPrincipal, Macro1, Macro2). Las macros 1 y 2
funcionan indiv idualmente, pero cuando ejecuto la MacroPrincipal, no hace
nada (tampoco me dá ningún error, lo mismo pasa cuando la utilizo con las
macros creada por mi).

Creo copiar las instrucciones tal cual como me lo envías pero no funciona.
Debe haber algo q estoy haciendo mal, pero no me doy cuenta.
Si puedes probar el ejemplo que me enviaste, te lo agradeceré.
Gracias. Espero tu comentario.
Mbaeijhapa.

Sub MacroPrincipal()
'
Select Case UCase(ActiveSheet.Range("A1").Value)
Case "Si": Call [Macro1]
Case "No": Call [Macro2]
End Select
End Sub


Sub Macro1()
'
MsgBox "Acceso Encendido"
End Sub

Sub Macro2()

MsgBox "Acceso denegado"

End Sub



"KL" escribió:

me he olividado de la cuarta causa posible - que alguno de los macros
(o
ambos) que llamas no funcione bien


Un saludo,
KL

"KL" wrote in message
news:%
> Entonces el problema puede tener tres posibles causas:
>
> 1) que la celda [A1] de la HOJA ACTIVA no contiene ninguno de los
> valores
> esperados o los tiene mal puestos (p.ej. con espacios)
>
> 2) que las otras macros se encuentren en los modulos de hoja,
> formulario o
> libro q no son desde donde los llamas. Para que los macros puedan ser
> llamados por otro macro deben estar en un modulo normal (p.ej. Modulo1)
> y
> no ser Private Sub, o bien estar en el mismo modulo de clase (hoja,
> formulario o libro) que el macro que los llama.
>
> 3) que esperes q el macro se dispare solo al cambiar los valores en las
> celdas. Si eso es lo q quieres tendras q asignar tu macro a algun
> evento.
> Lo mas logico seria depositar el codigo dentro del evento
> Worksheet_Change
> de la hoja que contiene la celda con SI o NO. O sea:
>
> Private Sub Worksheet_Change(ByVal Target As Range)
> Select Case UCase(ActiveSheet.Range("A1").Value)
> Case "SI": Call Macro1
> Case "NO": Call Macro2
> End Select
> End Sub
>
> Saludos,
> KL
>
> "Mbaeijhapa" wrote in message
> news:
>> KL, complemento mi nota,
>> En lugar de Macro1 puse "Si_Dis" (nombre de una de las macros)
>> Y en lugar de Macro2 puse "No_Dis" (nombre de la otra macro)
>> Se entiende ?
>> Gracias.
>> Mbaeijhapa.
>>
>>
>>
>> "KL" escribió:
>>
>>> Hola Mbaeijhapa,
>>>
>>> Select Case UCase(ActiveSheet.Range("A1").Value)
>>> Case "SI": Call Macro1
>>> Case "NO": Call Macro2
>>> End Select
>>>
>>> donde Macro1 y Macro2 son los nombres de los macros a llamar (sin los
>>> parentesis).
>>>
>>> Saludos,
>>> KL
>>>
>>> "Mbaeijhapa" wrote in message
>>> news:
>>> > Hola amigos,
>>> > Tengo dos macros en una misma planilla. Quisiera saber como puedo
>>> > hacer
>>> > para
>>> > ejecutar una u otra conforme al resultado de una celda (si la celda
>>> > dice
>>> > "SI"
>>> > que se ejecute Macro1, si dice "NO" que se ejecute Macro2.
>>> > Gracias.
>>> >
>>> > Mbaeijhapa.
>>> >
>>>
>>>
>>>
>
>



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida