select case

07/03/2005 - 15:43 por JR | Informe spam
No soy capaz a algo tan elemental como utilizar la select case, estoy bloqueado
Quiero que en funcion del valor de la celda A1 me muestre un msg box

Sub resultado()
Dim resultado
resultado = Range("a1")
Select Case resultado

Case 1, 5
MsgBox ("resultado1 o 5")
Case 6 To 10
MsgBox ("resultado 2 a 10")
Case 25
MsgBox ("resultado25")
Case Else
MsgBox ("otros resultados")

End Select
End Sub

Creo que así no puede ser porque a mi no me rula
A ver si alguien me echa una mano
Gracias a todos

Preguntas similare

Leer las respuestas

#1 Fernando Arroyo
07/03/2005 - 15:52 | Informe spam
Prueba con:

Sub resultado()
Select Case Range("A1") 'Convendría cualificar más el rango, p.ej.: Worksheets("Hoja1").Range("A1")
Case 1, 5
MsgBox "resultado 1 ó 5"
Case 2 To 10
MsgBox "resultado 2 a 10 (excluyendo el 5)"
Case 25
MsgBox "resultado 25"
Case Else
MsgBox "otros resultados"
End Select
End Sub


Un saludo.


Fernando Arroyo
MS MVP - Excel


"JR" escribió en el mensaje news:
No soy capaz a algo tan elemental como utilizar la select case, estoy bloqueado
Quiero que en funcion del valor de la celda A1 me muestre un msg box

Sub resultado()
Dim resultado
resultado = Range("a1")
Select Case resultado

Case 1, 5
MsgBox ("resultado1 o 5")
Case 6 To 10
MsgBox ("resultado 2 a 10")
Case 25
MsgBox ("resultado25")
Case Else
MsgBox ("otros resultados")

End Select
End Sub

Creo que así no puede ser porque a mi no me rula
A ver si alguien me echa una mano
Gracias a todos

Respuesta Responder a este mensaje
#2 Carlos Durán Urenda
07/03/2005 - 15:57 | Informe spam
el problema es que no defines el tipo de datos de resultado, y esta tomando
un tipo Variant, al asignar Resultado = Range("a1"), camiba a Varinat/Oject,
para poder apuntar al rango.
Cambia tu en tu codigo la definicion de Resultado a

Dim Resultado as Integer y todo te funcionara

Saludos
Carlos Durán
"JR" escribió en el mensaje
news:
No soy capaz a algo tan elemental como utilizar la select case, estoy
bloqueado
Quiero que en funcion del valor de la celda A1 me muestre un msg box

Sub resultado()
Dim resultado
resultado = Range("a1")
Select Case resultado

Case 1, 5
MsgBox ("resultado1 o 5")
Case 6 To 10
MsgBox ("resultado 2 a 10")
Case 25
MsgBox ("resultado25")
Case Else
MsgBox ("otros resultados")

End Select
End Sub

Creo que así no puede ser porque a mi no me rula
A ver si alguien me echa una mano
Gracias a todos

Respuesta Responder a este mensaje
#3 JR
07/03/2005 - 16:29 | Informe spam
ok que pardillo soy y como no lo veia???? muchísimas gracias

"Carlos Durán Urenda" escribió:

el problema es que no defines el tipo de datos de resultado, y esta tomando
un tipo Variant, al asignar Resultado = Range("a1"), camiba a Varinat/Oject,
para poder apuntar al rango.
Cambia tu en tu codigo la definicion de Resultado a

Dim Resultado as Integer y todo te funcionara

Saludos
Carlos Durán
"JR" escribió en el mensaje
news:
> No soy capaz a algo tan elemental como utilizar la select case, estoy
> bloqueado
> Quiero que en funcion del valor de la celda A1 me muestre un msg box
>
> Sub resultado()
> Dim resultado
> resultado = Range("a1")
> Select Case resultado
>
> Case 1, 5
> MsgBox ("resultado1 o 5")
> Case 6 To 10
> MsgBox ("resultado 2 a 10")
> Case 25
> MsgBox ("resultado25")
> Case Else
> MsgBox ("otros resultados")
>
> End Select
> End Sub
>
> Creo que así no puede ser porque a mi no me rula
> A ver si alguien me echa una mano
> Gracias a todos
>



Respuesta Responder a este mensaje
#4 KL
07/03/2005 - 17:15 | Informe spam
Hola chicos,

"JR" wrote in message:
ok que pardillo soy y como no lo veia???? muchísimas gracias



JR,
Yo q tu no me apresuraba con la autocritica eh :-).
Fuera del contexto tu macro esta perfectamente y funciona de maravilla.
Estoy de acuerdo con Carlos en q no estaria demas declarar Resultado como
Entero, aunque no creo q sea critico ni q sea la causa de tu problema.
Tambien creo q es muy buena la recomendacion de Fernando de calificar mas el
rango. Su codigo tambien te sugiere q no es necesario el uso de parentesis
con MsgBox en este caso.
De todas maneras, si comentas que error exactamente obtienes al usar tu
codigo original sera mas facil encontrar la verdadera causa del error.

"Carlos Durán Urenda" escribió:
el problema es que no defines el tipo de datos de resultado, y esta
tomando
un tipo Variant, al asignar Resultado = Range("a1"), camiba a
Varinat/Oject,





Carlos,
Que yo sepa, por defecto las variables siempre cogeran el valor del rango y
no el objeto. Al principio si q se usa el tipo Variant, pero al asignar
Range("a1") a la variable se cogera el tipo q corresponde al valor dentro
del rango. Para q Resultado cambie a Object haria falta Set Resultado =
Range("a1")

Saludos,
KL
Respuesta Responder a este mensaje
#5 JR
07/03/2005 - 20:59 | Informe spam
HOLA KL Pues efectivamente al declarar la variable no me influye el poner o
no poner tipo de datos. el error he comprobado que es por no definir el rango
completo, tal y como tu me dices
yo ponía en un principio algo así
dim resultado
resultado=range("A5")
esto es insuficiente y me da como resultado la sentencia de case else.
por el contrario como tu bien dices al definir mas completo
resultado=activesheet.range("a5") para la hoja activa o
worksheets("prueba").range. para la hoja prueba
todo rula a las mil maravillas
GRacias de nuevo a todos-.

Hola chicos,

"JR" wrote in message:
> ok que pardillo soy y como no lo veia???? muchísimas gracias

JR,
Yo q tu no me apresuraba con la autocritica eh :-).
Fuera del contexto tu macro esta perfectamente y funciona de maravilla.
Estoy de acuerdo con Carlos en q no estaria demas declarar Resultado como
Entero, aunque no creo q sea critico ni q sea la causa de tu problema.
Tambien creo q es muy buena la recomendacion de Fernando de calificar mas el
rango. Su codigo tambien te sugiere q no es necesario el uso de parentesis
con MsgBox en este caso.
De todas maneras, si comentas que error exactamente obtienes al usar tu
codigo original sera mas facil encontrar la verdadera causa del error.

> "Carlos Durán Urenda" escribió:
>> el problema es que no defines el tipo de datos de resultado, y esta
>> tomando
>> un tipo Variant, al asignar Resultado = Range("a1"), camiba a
>> Varinat/Oject,

Carlos,
Que yo sepa, por defecto las variables siempre cogeran el valor del rango y
no el objeto. Al principio si q se usa el tipo Variant, pero al asignar
Range("a1") a la variable se cogera el tipo q corresponde al valor dentro
del rango. Para q Resultado cambie a Object haria falta Set Resultado =
Range("a1")

Saludos,
KL



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