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

#16 KL
20/03/2005 - 12:13 | Informe spam
Esta instruccion es equivalente a la otra solo que no deberia ser necesario
seleccionar la celda en cuestion. Tampoco esta previsto el factor
mayusculas/minusculas. Para poder decir por que no ha funcionado la otra
haria falta el archivo y saber la version de tu Office.

Saludos,
KL

"Mbaeijhapa" wrote in message
news:
Hola KL,
Estuve probando con otrás instrucciones y aparentemente funciona bien con
el
siguiente:

Sub aaa()
Range("A1").Select
If ActiveCell = "Si" Then Si_Dis Else No_Dis
End Sub

Las macros que quiero que se ejecuten si la celda "A1" = "Si" o "No", son
"Si_Dis" o "No_Dis" respectivamente, y parece q con esta instrucciión
funciona bien.
Me gustaría que me dés tu opinión al respecto. No quisiera tener alguna
sorpresa en el futuro.
Muchas gracias.
Espero tu respuesta.

Mbaeijhapa.

"KL" escribió:

> Tanto los acentos, espacios, mayúsculas como minúsculas, los tengo muy
> presente. No es por ahí el error.

Precisamente mayúsculas como minúsculas no importan porque para eso uso
la
funcion UCase y las opciones en mayusculas.

> Además, como te comente anteriormente. Cree un archivo con el ejemplo q
> me
> enviaste, y tampoco me funciona la MacroPrincipal; las Mcros 1 y 2,
> funcionan
> bien individualmente pero ejecutando la Principal no funcionan (mejor
> dicho
> "no la llaman").

Todo apunta a que es una de dos: o la hoja activa no es la que crees, o
la
celda donde pones SI/NO no es A1. Para comprobarlo puedes usar el
siguiente
macro colocandolo en un modulo normal (no de hoja o libro) del mismo
libro
que los demas:

Sub Test()
For Each wb In Application.Workbooks
For Each s In wb.Worksheets
If UCase(s.Range("A1").Value) = "SI" Or _
UCase(s.Range("A1").Value) = "NO" Then
Libro = wb.Name
Hoja = s.Name
GoTo Reconocer
Exit For
End If
Next s
Next wb
MsgBox "No existe libro abierto que tenga SI o NO" & Chr(13) _
& " en la celda A1 de alguna de sus hojas."
Exit Sub

Reconocer:
If Hoja = ActiveSheet.Name And Libro = ActiveSheet.Parent.Name Then
MsgBox "Esta todo correcto."
Else
With ActiveSheet
MsgBox "El valor de la celda A1 de la hoja """ _
& UCase(.Name) & """ que esta activa es: """ _
& .Range("A1").Value & """" & Chr(13) & Chr(13) _
& "Probablemente lo que buscas se encuentra " _
& Chr(13) & "en el libro """ & wb.Name _
& """, hoja """ & s.Name & """"

End With
End If
End Sub



Respuesta Responder a este mensaje
#17 KL
20/03/2005 - 12:45 | Informe spam
... tu instruccion con IF tampoco preve q alguien ponga en A1 algo que no
sea SI o NO. Yo la transformaria a:

Sub aaa()
Range("A1").Select
If UCase(ActiveCell) = "SI" Then
Si_Dis
ElseIf UCase(ActiveCell) = "NO" Then
No_Dis
End If
End Sub

A ver si va a ser la funcion UCase el problema.

Saludos
KL

"KL" wrote in message
news:%23u$
Esta instruccion es equivalente a la otra solo que no deberia ser
necesario seleccionar la celda en cuestion. Tampoco esta previsto el
factor mayusculas/minusculas. Para poder decir por que no ha funcionado la
otra haria falta el archivo y saber la version de tu Office.

Saludos,
KL

"Mbaeijhapa" wrote in message
news:
Hola KL,
Estuve probando con otrás instrucciones y aparentemente funciona bien con
el
siguiente:

Sub aaa()
Range("A1").Select
If ActiveCell = "Si" Then Si_Dis Else No_Dis
End Sub

Las macros que quiero que se ejecuten si la celda "A1" = "Si" o "No", son
"Si_Dis" o "No_Dis" respectivamente, y parece q con esta instrucciión
funciona bien.
Me gustaría que me dés tu opinión al respecto. No quisiera tener alguna
sorpresa en el futuro.
Muchas gracias.
Espero tu respuesta.

Mbaeijhapa.

"KL" escribió:

> Tanto los acentos, espacios, mayúsculas como minúsculas, los tengo muy
> presente. No es por ahí el error.

Precisamente mayúsculas como minúsculas no importan porque para eso uso
la
funcion UCase y las opciones en mayusculas.

> Además, como te comente anteriormente. Cree un archivo con el ejemplo
> q me
> enviaste, y tampoco me funciona la MacroPrincipal; las Mcros 1 y 2,
> funcionan
> bien individualmente pero ejecutando la Principal no funcionan (mejor
> dicho
> "no la llaman").

Todo apunta a que es una de dos: o la hoja activa no es la que crees, o
la
celda donde pones SI/NO no es A1. Para comprobarlo puedes usar el
siguiente
macro colocandolo en un modulo normal (no de hoja o libro) del mismo
libro
que los demas:

Sub Test()
For Each wb In Application.Workbooks
For Each s In wb.Worksheets
If UCase(s.Range("A1").Value) = "SI" Or _
UCase(s.Range("A1").Value) = "NO" Then
Libro = wb.Name
Hoja = s.Name
GoTo Reconocer
Exit For
End If
Next s
Next wb
MsgBox "No existe libro abierto que tenga SI o NO" & Chr(13) _
& " en la celda A1 de alguna de sus hojas."
Exit Sub

Reconocer:
If Hoja = ActiveSheet.Name And Libro = ActiveSheet.Parent.Name Then
MsgBox "Esta todo correcto."
Else
With ActiveSheet
MsgBox "El valor de la celda A1 de la hoja """ _
& UCase(.Name) & """ que esta activa es: """ _
& .Range("A1").Value & """" & Chr(13) & Chr(13) _
& "Probablemente lo que buscas se encuentra " _
& Chr(13) & "en el libro """ & wb.Name _
& """, hoja """ & s.Name & """"

End With
End If
End Sub









Respuesta Responder a este mensaje
#18 Mbaeijhapa
22/03/2005 - 03:49 | Informe spam
Hola KL,
Muchas gracias, como siempre tu aporte me es de mucha utilidad.
¡¡¡ EXCELente !!!

Saludos.
Maeijhapa.

"KL" escribió:

tu instruccion con IF tampoco preve q alguien ponga en A1 algo que no
sea SI o NO. Yo la transformaria a:

Sub aaa()
Range("A1").Select
If UCase(ActiveCell) = "SI" Then
Si_Dis
ElseIf UCase(ActiveCell) = "NO" Then
No_Dis
End If
End Sub

A ver si va a ser la funcion UCase el problema.

Saludos
KL

"KL" wrote in message
news:%23u$
> Esta instruccion es equivalente a la otra solo que no deberia ser
> necesario seleccionar la celda en cuestion. Tampoco esta previsto el
> factor mayusculas/minusculas. Para poder decir por que no ha funcionado la
> otra haria falta el archivo y saber la version de tu Office.
>
> Saludos,
> KL
>
> "Mbaeijhapa" wrote in message
> news:
>> Hola KL,
>> Estuve probando con otrás instrucciones y aparentemente funciona bien con
>> el
>> siguiente:
>>
>> Sub aaa()
>> Range("A1").Select
>> If ActiveCell = "Si" Then Si_Dis Else No_Dis
>> End Sub
>>
>> Las macros que quiero que se ejecuten si la celda "A1" = "Si" o "No", son
>> "Si_Dis" o "No_Dis" respectivamente, y parece q con esta instrucciión
>> funciona bien.
>> Me gustaría que me dés tu opinión al respecto. No quisiera tener alguna
>> sorpresa en el futuro.
>> Muchas gracias.
>> Espero tu respuesta.
>>
>> Mbaeijhapa.
>>
>> "KL" escribió:
>>
>>> > Tanto los acentos, espacios, mayúsculas como minúsculas, los tengo muy
>>> > presente. No es por ahí el error.
>>>
>>> Precisamente mayúsculas como minúsculas no importan porque para eso uso
>>> la
>>> funcion UCase y las opciones en mayusculas.
>>>
>>> > Además, como te comente anteriormente. Cree un archivo con el ejemplo
>>> > q me
>>> > enviaste, y tampoco me funciona la MacroPrincipal; las Mcros 1 y 2,
>>> > funcionan
>>> > bien individualmente pero ejecutando la Principal no funcionan (mejor
>>> > dicho
>>> > "no la llaman").
>>>
>>> Todo apunta a que es una de dos: o la hoja activa no es la que crees, o
>>> la
>>> celda donde pones SI/NO no es A1. Para comprobarlo puedes usar el
>>> siguiente
>>> macro colocandolo en un modulo normal (no de hoja o libro) del mismo
>>> libro
>>> que los demas:
>>>
>>> Sub Test()
>>> For Each wb In Application.Workbooks
>>> For Each s In wb.Worksheets
>>> If UCase(s.Range("A1").Value) = "SI" Or _
>>> UCase(s.Range("A1").Value) = "NO" Then
>>> Libro = wb.Name
>>> Hoja = s.Name
>>> GoTo Reconocer
>>> Exit For
>>> End If
>>> Next s
>>> Next wb
>>> MsgBox "No existe libro abierto que tenga SI o NO" & Chr(13) _
>>> & " en la celda A1 de alguna de sus hojas."
>>> Exit Sub
>>>
>>> Reconocer:
>>> If Hoja = ActiveSheet.Name And Libro = ActiveSheet.Parent.Name Then
>>> MsgBox "Esta todo correcto."
>>> Else
>>> With ActiveSheet
>>> MsgBox "El valor de la celda A1 de la hoja """ _
>>> & UCase(.Name) & """ que esta activa es: """ _
>>> & .Range("A1").Value & """" & Chr(13) & Chr(13) _
>>> & "Probablemente lo que buscas se encuentra " _
>>> & Chr(13) & "en el libro """ & wb.Name _
>>> & """, hoja """ & s.Name & """"
>>>
>>> End With
>>> End If
>>> End Sub
>>>
>>>
>>>
>
>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida