Jump to content
Antoni

No debería cumplirse la condición

Recommended Posts

Hola Antoni,

Son las veces si no sabe uno si Reír o Llorar o alegrarse de que uno encontró un Bug y poderlo reportar... Ya hice pruebas y nada... sigue con aparecer el Mensaje...!!!

A veces me pasa eso y lo que hago es eliminar el formulario o incluso a veces el archivo y empezar...😂😂😂

Voy a hacer un formulario identico y te cuento...

 

Saludos.

Share this post


Link to post
Share on other sites
Hace 1 hora, Leopoldo Blancas dijo:

Ya lo arregle... Creo que este paso es innecesario, pero tendrá su explicación???, pero Funciona.

 

Saludos.

Descuadre_LBV.xlsm 14 kB · 0 descargas

Pues a mi no me funciona, en Europa utilizamos la coma como separador decimal, en cualquier caso, no tiene sentido convertir a doble una variable que ya está definida como doble y se acumula convirtiendo a doble los textbox, definiendo las variables como moneda se arregla el problema . Imagino que es un problema de precisión a la hora de convertir. (¿?)

Otra forma sería convertir a moneda antes de comparar

Vendes = CCur(Vendes)
Mitxans = CCur(Mitxans)

 que es mas o menos lo que haces tú, o sea eliminar a partir del tercer decimal.

    X1 = CDbl(Format(Vendes, "#.00")) '<<<<<<------------
    X2 = CDbl(Format(Mitxans, "#.00")) '<<<<<<------------

Se agradece el interés y la dedicación.🙂🙂

 

Edited by Antoni

Share this post


Link to post
Share on other sites

hola, a todos !

Hace 2 horas, Antoni dijo:

en Europa utilizamos la coma como separador decimal

se trata de un bug inatendido que se presenta desde la versión xl-97 hasta la más actual pero solo en las versiones NO-USA de excel y en lo que toca a controles "TextBox" desde formularios, por lo que involucra (al menos) dos vertientes: idioma y configuración regional

1) como VBA es US-Centric, NO acepta la coma como separador válido para las decimales

2) un textbox, a pesar de que (su uso entendido) toma (preferentemente) TEXTOS y debiera aceptar CUALQUIER caracter, "piensa", "asume" ...  que toda version no-us-centric usa la coma en las decimales

3) funciones de vba como CDbl(... usan la configuración regional del equipo por lo que pueden interpretar esa incongruencia

un caso práctico de excel NO en inglés y configuración regional con separador decimal de coma (el mismo del ejemplo) se puede resolver de la siguiente forma:

op1: haciendo la pregunta consultando al excel, cambiar la forma del If...
If Vendes <> Mitxans Then
por esta forma:
If Evaluate(Vendes) <> Evaluate(Mitxans) Then

op2: cambiando el separador "ofensivo" a vba (p.ej. usando una instrucción previa como):
Vendes = Replace(Vendes, ",", "."): Mitxans = Replace(Mitxans, ",", ".")

op3: cambiando el tipo de datos de double a single (y sus conversiones) -LBV-

OJO (obviamente) FALLAN si la situación es que el separador decimal es el mismo que "espera" vba

conclusión:

operar cifras con decimales desde controles textbox (y vba)... presenta sus imponderables (?)

Share this post


Link to post
Share on other sites



×
×
  • Create New...

Important Information

Privacy Policy