Saltar al contenido

No debería cumplirse la condición


Antoni

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.

Enlace a comentario
Compartir con otras webs

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.??

 

Enlace a comentario
Compartir con otras webs

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

Enlace a comentario
Compartir con otras webs

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 96 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • He cambiado mi macro a este: Sub repetir() Set a = Sheets(ActiveSheet.Name) uf = a.Range("C" & Rows.Count).End(xlUp).Row 'ultima fila con datos ActiveCell.Select ActiveCell.Offset(1, 0).Select   'Application.OnTime Now + TimeValue("00:00:10"), "repetir", , True End If End Sub   Lo que no se es como detenerlo al llegar a la ultima fila con datos de la columna C. Muchas gracias
    • Buenas tardes a todos. Tengo un problema que preciso de vuestra ayuda.  Tengo que controlar los gastos de la oficina que trabajo y he de repartir unos gastos a % según una OT y unos tipos de gastos. Envío un archivo adjunto. Lo que necesito es que lo que aparece en la columna en amarillo lo haga automáticamente, teniendo en cuenta los datos de la tabla a la derecha. Por ejemplo, el primer gasto tiene una cuota de 1477 euros y teniendo en cuenta que es un gasto de tipo Común y que la OT es la 12810234, le corresponde un gasto de 605,57 euros ya que según la tabla de la derecha su % a imputar es de un 41%. ¿alguien me puede ayudar con la formula? He de añadir muchas más líneas y más hojas con el resto de OT y en el futuro cambiar más datos, así que necesito automatizarlo con una formula Excel. Gracias. Control de gastos.xlsx
    • Hola buenas tardes: Por favor me pueden ayudar a realizar lo siguiente. ejecutar una macro después de un tiempo, que recorra una columna a partir de la celda activa hacia abajo. Es una lista extensa, que filtro desde la columna B. y solo me muestra las filas que me interesan. ejemplo: Si mi celda activa es la C23 ejecutar la macro y baje una celda y repite la macro después de 20 segundos y lo vuelve hacer(Simpre bajando una celda), y que este se detenga hasta la ultima fila que este visible en el filtro. Ya que puedo tener muchos datos mas.   Gracias   Prueba filtro y avance.xlsm
    • Muchísimas gracias @Victor7 es realmente increíble. Ahora toca aprender un poco sobre como esta montada esta formula,  pero me ha encantado. Es justo lo que necesitaba. Solo he notado algún fallo cuando los datos no están bien introducidos, por ejemplo hay registro en el punto de control 2 y no en el tres, pero eso en teoría no debería pasar, pero ya sabes como es esto jajaj.  Muchas gracias de verdad. Un saludo
    • Hola, Si lo he entendido bien, te adjunto archivo que creo puede cumplir tus expectativas. En la nueva hoja 'DVU(b)' están los resultados.  Tiene 3 fórmulas: La primera está en A1, que repetirá los títulos de la hoja 'DATAGlobal'.  A medida que se vayan actualizando en esta última hoja, también irán apareciendo automáticamente en la hoja de resultados. Ahora mismo he puesto como rango A1:CB1, pero puede incrementarse de ser necesario. La 2ª fórmula es la de A2:  devuelve las 'Unidades' únicas de la hoja principal.  A este respecto, he colocado como rango de análisis A2:A1900; si prevés que pudiere haber más registros, puedes ampliarlo sin problemas a A2:A19000, o incluso A2:A190000, o más. Y la 3ª fórmula está en B2:  aquí se recogen las cantidades de la columna B que constan en la última aparición de la 'unidad' que se trate, que es la que figura en la celda de la izquierda.  Con la última aparición, me vengo a referir, por ejemplo, que en la fila 4, que recoge la unidad ZCRLA63832, el primer resultado (12,5) lo ha obtenido de B39 y no de A4.  Si no son los mismos, los resultados no serán los esperados.  Y el siguiente resultado (100) es C39.  Esta fórmula también evalúa ahora mismo el rango 2:1900; habrá que ampliarlo dejándolo igual que en la 2ª fórmula, si es el caso. Esta 3ª fórmula, de B2, la puedes copiar horizontalmente hasta donde quieras; siempre devolverá una matriz dinámica con los resultados esperados. Espero haber explicado bien el funcionamiento de la hoja. Saludos, Progreso Unidades (C).xlsx
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.