Jump to content

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.

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
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 (?)

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • Hola @Serch! Adjunto una alternativa empleando una columna auxiliar! Saludos! Ejemplo busqueda de valor correspondiente para cada semana.xlsx
    • Hola buenos dias, solicito de su apoyo ya que necesito encontrar un valor "ID" de una "Tienda" a lo largo de 1 mes y que me de como resultado para cada semana el "ID" de la persona que fue a visitar esa tienda.   Espero me puedan ayudar, adjunto ejemplo e instrucciones dentro de este.   mil gracias y saludos.¡¡¡ Ejemplo busqueda de valor correspondiente para cada semana.xlsx
    • saludos. estoy desarrollando un formulario en los deseo calcular varios textbox y mostrar el resultado en otros, el problema radica cuando los coloco con formato de miles los cálculos no funcionan; por favor si alguien me puede dar una ayuda o indicarme el procedimiento. ya he utilizado el cdbl(replace((.. obteniendo el mismo resultado. adjunto enlace. https://drive.google.com/drive/folders/1mPjlo-c7rCrwALgK9pF20e3J-XQG8Wk6?usp=sharing muchas gracias por su pronta colaboración.
    • Bueno!!, logre hacer que funcione. Este seria el codigo final. ' Modulo NoCoincidencia Dim SerialNoAuditado As Variant On Error GoTo IngresarSerialNoAuditado: SerialNoAuditado = Worksheets("Reg. N-Auditados").Range("B5").Value Resultado = Application.WorksheetFunction.Match(SerialNoAuditado, Worksheets("Laptop").Range("D6:D40005"), 0) If Resultado > 0 Then GoTo SerialAuditado: Else GoTo IngresarSerialNoAuditado: End If ' Aqui es para indicar que el serial esta auditado SerialAuditado: MsgBox "Este equipo fue auditado, por favor registrelo en el modulo correspondiente 'Reg. Entradas o Reg. Salidas'" Borrar_Campos Range("B5").Select Exit Sub IngresarSerialNoAuditado: 'Inicio insertar linea en la hoja registro de equipos no auditados Las etiqueta "NuevoIngreso:" fueron eliminadas. Por favor indiquenme si hay algun error o se puede mejorar el codigo. Agradecido de antemano
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy