** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - Función lógica if
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoFunción lógica if

 Responder Responder
Autor
Mensaje
JOSE LUIS CALVO Ver desplegable
Habitual
Habitual
Avatar

Unido: 30/Diciembre/2008
Localización: Colombia
Estado: Sin conexión
Puntos: 141
Enlace directo a este mensaje Tema: Función lógica if
    Enviado: 06/Enero/2009 a las 03:41
Quisiera que me ayudarán con la siguiente pregunta.
 
En una celda de excel tengo una palabra, cuando hago la pregunta en visual diciendo que si esta palabra (por ejemplo la palabra "perro") es mayor a cero, el me devuelve como respuesta que es VERDADERO.
 
if "perro>0 then ' Retorna una respuesta verdadera.
 
Quiero saber por qué retorna como respuesta verdadero, si son letras y NO NUMEROS.
 
Por otra parte el problema  como puedo hacer para preguntar que si lo que hay en activecell son letras y NO números me haga una operación, es decir, que a través de un comando o una función o algún proceso, él sistema me valide si son palabras o son números, ya que en mi proceso necesito que me haga una operación, PERO SOLAMENTE CUANDO EN LA CELDA HAY NUMEROS.
Arriba
oirausu Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 25/Diciembre/2005
Localización: España
Estado: Sin conexión
Puntos: 4217
Enlace directo a este mensaje Enviado: 06/Enero/2009 a las 04:36
A lo de
 
if "perro>0 then ' Retorna una respuesta verdadera.
 
no se responderte
 
Para lo otro, mira si te es suficiente con
 
IsNumeric
Arriba
Jordi-Albert Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Abril/2006
Localización: Alemania
Estado: Sin conexión
Puntos: 4315
Enlace directo a este mensaje Enviado: 06/Enero/2009 a las 11:26
Perro, no deja de ser (como todo en informatica) un conjunto de ceros y unos.

si preguntas por Perro te mirara el valor de la primera letra (P) la cual corresponde al "numero" 80 y por lo tanto es mayor que 0 (cero)






Editado por Jordi-Albert - 06/Enero/2009 a las 11:26
Arriba
MexMan70 Ver desplegable
Colaborador
Colaborador


Unido: 17/Julio/2007
Localización: DarkSide
Estado: Sin conexión
Puntos: 9227
Enlace directo a este mensaje Enviado: 06/Enero/2009 a las 17:59

Con todo respeto, Jordi, aunque le pongas la cantidad que sea, siempre una letra (la que sea) te devolvera que es mayor que cualquier cantidad.

Saludos !
OneDrive: http://sdrv.ms/Vk6eJd
Arriba
Jordi-Albert Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Abril/2006
Localización: Alemania
Estado: Sin conexión
Puntos: 4315
Enlace directo a este mensaje Enviado: 06/Enero/2009 a las 18:19
precisamente....
el espacio tiene el valor 32 y la A el 64....

todos ellos son mayores de 0

por decirlo de otra manera.... los caracteres ocupan bytes.

los bytes son unos y ceros, que no se distinguen entre ellos, por lo que en principio todo byte puede ser numeros, letras, posiciones, punteros, etc...

dependerá del programa el poder interpretar correctamente este byte.

por ello "normalmente" definimos las variables
dim strlinea    as string....

de esta manera estamos diciendole al programa que reserve un espacio para una variable, y que esta variable se tiene que leer como un texto....



Editado por Jordi-Albert - 06/Enero/2009 a las 18:22
Arriba
PabloG Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 26/Diciembre/2008
Localización: Argentina
Estado: Sin conexión
Puntos: 0
Enlace directo a este mensaje Enviado: 06/Enero/2009 a las 19:09
MexMan70
Es cierto, pero la respuesta de Jordi no es incorrecta.
 
Al estar comparando cadenas con números, a VBA no le queda otra que intentar convertir tu cadena en número o tu número en cadena, para poder evaluarlos correctamente.
 
Cuando pueda realizar esa tarea y la comparación debe ser realizada entre cadenas, VBA va a fijarse en la codificación ASCII de cada caracter que las componen, acá hay una lista completa de ellos http://www.portalplanetasedna.com.ar/ascii.htm
 
Cuando no pueda convertir los datos a cadenas o números, entonces generará un error de tipos:
Así por ejemplo cuando quieran realizar la siguiente comparación:
debug.Print 1 > "-5 abc"
 
Para todos nosotros "p" no es mayor que "P", no por ser una minúscula y la otra mayúscula, sino porque ambas son la misma letra, para en código ASCII una equivale a 112 y la otra a 80, por eso "p" es mayor a "P"
debug.Print "p" > "P"
 
Por último, cuando los números son convertidos a letras, no se tomará para la comparación el número que representan, sino su equivalente a ASCII.
Cuando el número es pasado a texto indefectiblemente comienza con un caracter entre "0" y "9", estos, en código ASCII están entre el 48 y el 57.
Por eso es que ningún número es mayor a "P" (que como ya dije, es equivalente a 80 en ASCII).
 
Saludos,
Pablo G. González
Buenos Aires, Argentina
Arriba
MexMan70 Ver desplegable
Colaborador
Colaborador


Unido: 17/Julio/2007
Localización: DarkSide
Estado: Sin conexión
Puntos: 9227
Enlace directo a este mensaje Enviado: 07/Enero/2009 a las 00:24
Hola pablo:
Primero.- Nunca dije que fuera incorrecta
Segundo.- Lo que le comentaba a Jordi era lo siguiente:
 
Publicado originalmente por Jordi-Albert Jordi-Albert escribió:

Perro, no deja de ser (como todo en informatica) un conjunto de ceros y unos.

si preguntas por Perro te mirara el valor de la primera letra (P) la cual corresponde al "numero" 80 y por lo tanto es mayor que 0 (cero)
 
Con esto lo que queria puntualizar es que si alguien intentaba poner un valor superior a 80 (o el que gustes) para que si comparaban la letra P (con valor 80, de acuerdo al codigo ASCII) tambien le iba a decir que P seguia siendo mayor. La razón, como comenta Jordi, al tratar de comparar manzanas con peras, no encuentra excel otra logica que compararlo de acuerdo al código ASCII (o sea el valor ASCII de cualquier numero, ejemplo: 1500, toma el 1 como referencia =49 su valor= despreciando los demas digitos, que lo mismo pasa con las letras, pues de la palabra Perro, solo checa el valor ASCII del primer caracter =P, 80 su valor=).
 
Saludos y espero que esto aclare el tema un poco mas.
 
Edito: Esta imágen como dice el dicho "... dice mas que mil
palabras"
 



Editado por MexMan70 - 07/Enero/2009 a las 00:34
OneDrive: http://sdrv.ms/Vk6eJd
Arriba
Jordi-Albert Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Abril/2006
Localización: Alemania
Estado: Sin conexión
Puntos: 4315
Enlace directo a este mensaje Enviado: 07/Enero/2009 a las 09:49
Publicado originalmente por MexMan70 MexMan70 escribió:

Segundo.- Lo que le comentaba a Jordi era lo siguiente:
 
Publicado originalmente por Jordi-Albert Jordi-Albert escribió:

Perro, no deja de ser (como todo en informatica) un conjunto de ceros y unos.

si preguntas por Perro te mirara el valor de la primera letra (P) la cual corresponde al "numero" 80 y por lo tanto es mayor que 0 (cero)
 


Perdon... parece ser que me he explicado mal. Me referia al valor 0, no al cero (como letra)

(es decir al byte: "0000000")
Arriba
JOSE LUIS CALVO Ver desplegable
Habitual
Habitual
Avatar

Unido: 30/Diciembre/2008
Localización: Colombia
Estado: Sin conexión
Puntos: 141
Enlace directo a este mensaje Enviado: 07/Enero/2009 a las 14:48
Les agradezco mucho a todos por su respuesta y me queda totalmente claro, porque me arroja un verdadero cuando lo comparo con algunas palabras, pero por favor me pueden decir como hago para que visual reconozca en diez filas de números, o sea, tengo diez valores hacia abajo, pero en la mitad, o sea en la fila 5 tengo una palabra, como debo preguntar para decirle que si encuentra un texto lo omita y siga hacia abajo hasta que encuentre un número. Gracias a todos
Arriba
oirausu Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 25/Diciembre/2005
Localización: España
Estado: Sin conexión
Puntos: 4217
Enlace directo a este mensaje Enviado: 07/Enero/2009 a las 15:00
Publicado originalmente por oirausu oirausu escribió:

A lo de
 
if "perro>0 then ' Retorna una respuesta verdadera.
 
no se responderte
 
Para lo otro, mira si te es suficiente con
 
IsNumeric
Arriba
JOSE LUIS CALVO Ver desplegable
Habitual
Habitual
Avatar

Unido: 30/Diciembre/2008
Localización: Colombia
Estado: Sin conexión
Puntos: 141
Enlace directo a este mensaje Enviado: 07/Enero/2009 a las 20:29
Muchas gracias, hice la prueba con IsNumeric y funcionó muy bien.
Eres muy amable
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable