|
Responder
|
| Autor | ||
Nakku
Nuevo
Unido: 13/Diciembre/2019 Localización: España Estado: Sin conexión Puntos: 7 |
Tema: Duda simple con InputBoxEnviado: 13/Diciembre/2019 a las 19:24 |
|
|
Hola buenas! Llevo unos meses con vba por lo que mi nivel es bastante bajo y me ha surgido el siguiente problema con este código: Pregunta = InputBox("Quien es mas alto" & Chr(13) & "A.Prueba1" & Chr(13) & "B.Prueba2") If UCase(Pregunta) = A Then Msgbox ("Correcto") Else Msgbox ("Fallido") End If Lo que pretendo es que en caso de que la respuesta insertada en el InputBox sea la primera, la A, salga un MsgBox y en caso contrario, otro MsgBox diciendo otra cosa, pero aun que introduzca la A me da Fallido (MsgBox en caso de que no sea A la respuesta) y no acabo de entender el porque. Muchas gracias!
|
||
![]() |
||
rokoko
Colaborador
Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3071 |
Enviado: 13/Diciembre/2019 a las 19:45 |
|
|
If UCase(pregunta) = "A" Then
Es una buena costumbre declarar la variable Dim pregunta As String pregunta = InputBox("Quien es mas alto" & Chr(13) & "A.Prueba1" & Chr(13) & "B.Prueba2") If UCase(pregunta) = "A" Then MsgBox ("Correcto") Else MsgBox ("Fallido") End If Al ser letras siempre tiene que ir entre comillas dobles String es una variable de texto.
Editado por rokoko - 13/Diciembre/2019 a las 19:52 |
||
![]() |
||
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14926 |
Enviado: 13/Diciembre/2019 a las 20:27 |
|
|
Como dice rokoko, es un buena costumbre declarara las variables. Si lo hubieras tenido así, probablemente ya habrías recibido un mensaje de error que te habría indicado cual es tu fallo: variable A no declarada. Un saludo
|
||
![]() |
||
Nakku
Nuevo
Unido: 13/Diciembre/2019 Localización: España Estado: Sin conexión Puntos: 7 |
Enviado: 13/Diciembre/2019 a las 20:44 |
|
Gracias a los dos por el consejo, y lo tendre en cuenta jaja, como digo aun soy novatillo, al final lo conseguí arreglar despues de mirarmelo un par de veces jaja, el problema lo tengo cuando quiero aplicarlo de manera más compleja, en este caso hago lo siguiente: Correcto = Sheets("Preguntas").Range("E" & Fila) 'ya que tengo las preguntas en otra hoja en este caso, y hago lo siguiente, en la hoja donde quiero aplicar el InputBox y tal: If PosJ1 = 4 Then Resp = InputBox(Pregunta & Chr(13) & "A. " & RespA & Chr(13) & "B. " & RespB & Chr(13) & "C. " & RespC) If UCase(Resp) = Correcto Then MsgBox ("Correcto!") Else MsgBox ("Seguro?") End If End If He probado a poner el .Value al final de la variable ''Correcto'' y tampoco, entonces, se que si yo pongo que UCase(Resp)="La respuesta que sea" me hace bien el codigo, pero de esta forma me salta directamente al Else y no acabo de entender el porque si la variable esta bien (o eso creo)... Perdón por el tocho y por la pésima explicación, y muchas gracias, de verdad! Un abrazo.
|
||
![]() |
||
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14926 |
Enviado: 13/Diciembre/2019 a las 21:09 |
|
|
¿Has verificado que la variable "Correcto" contiene la respuesta correcta?
Prueba poniendo un punto de interrupción en la primera linea de código y ejecuta paso a paso para evaluar en cada linea las diferentes variables, valores y condiciones. A lo mejor encuentras espacios o cosas raras que hacen que la igualdad no se cumpla Un saludo
|
||
![]() |
||
Nakku
Nuevo
Unido: 13/Diciembre/2019 Localización: España Estado: Sin conexión Puntos: 7 |
Enviado: 13/Diciembre/2019 a las 21:35 |
|
Si, lo he comprobado, de hecho, al ejecutar la macro paso por paso se cumple el UCase(Resp)=Correcto, pero aun así salta al Else nose porque. Un saludo!
|
||
![]() |
||
AnSanVal
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Unido: 16/Marzo/2005 Localización: España Estado: Sin conexión Puntos: 5990 |
Enviado: 14/Diciembre/2019 a las 19:29 |
|
|
Afirmar que «... se cumple el UCase(Resp)=Correcto...» y decir a continuación «... pero aun así salta al Else…», ¡No tiene sentido! Precisamente la confirmación de que se cumple es cuando NO salta al Else. En una de tus pruebas ¿Que valor tiene Resp y que valor tiene Correcto?. |
||
|
Saludos desde Tenerife.
|
||
![]() |
||
Nakku
Nuevo
Unido: 13/Diciembre/2019 Localización: España Estado: Sin conexión Puntos: 7 |
Enviado: 14/Diciembre/2019 a las 21:09 |
|
Sisi, se que no tiene sentido, pero de verdad que cuando miraba paso por paso el codigo salia UCase(Resp)(Valor:Respuesta)=Correcto(Valor:Respuesta) y aun así me saltaba al Else, por eso no entendia lo que pasaba! Y hoy, tras cambiar los Range por Cells, nose porque, ya me ha funcionado todo a la perfección. Muchas gracias a todos por las respuestas! Un Abrazo.
Editado por Nakku - 14/Diciembre/2019 a las 21:10 |
||
![]() |
||
Responder
|
|
|
Tweet
|
| Ir al foro | Permisos de foro ![]() Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |