Problema con las comas en excel y visual basic

Estoy haciendo un programa muy simple en excel con el complemento de visual basic, el caso es que tengo que dividir un numero de una celda entre otro y no se porque pero en el resultado me desaparece la coma. He probado esto: al hacer click en el botón me tiene que aparecer en un TextBox el resultado del producto 181,6*1 (181,6 esta en una celda, en el código pongo TextBox1 = Range("B2"). FormulaR1C1 * 1)y en lugar de aparecer 181,6 aparece 1816. En cambio si le digo que al pulsar el botón aparezca en el TextBox el numero que haya en la celda me aparece 181.6 (Supongo que el punto en vb equivale a la coma en excel). Haber si algún me puede ayudar.

1 respuesta

Respuesta
1
Mientras escribes el texto en un programa, el separador del decimal es siempre el punto (salvo en lenguajes que te termiten definirlo como es Cobol).
El problema que tienes es que estás trayendo la 'fórmula de la celda' en lugar del 'valor de la celda'. El primero es un valor de tipo texto mientras que el segundo caso sería un número.
En este caso, como el separador de decimales que tienes definido en el sistema es la coma y al traerte la fórmula te coge una cadena de caracteres usando ese caráter para separar el decimal.
Al multiplicar ese valor por 1 te encuentras que estás multiplicando un texto (con una coma de separación de decimales) por un número.
Esto en otros lenguajes pegaría un petardazo, pero Visual Basic intenta amablemente hacer la operación y mete la pata hasta el fondo.
Solución: Quita la propiedad FormulaR1C1 y no pongas nada o, como mucho, usa la propiedad 'Value':
     TextBox1 = Range("B2") * 1
              o
     TextBox1 = Range("B2").Value * 1
En ambos casos realizará correctamente el cálculo, aunque supongo que lo que buscabas es el valor de la celda con sus decimales y sobrará el multiplicar por 1.
Muchas gracias estuve ayer toda la tarde atascado con eso, la verdad es que no sabia programar en vb y me he tenido que leer un montón de manuales en unos días. Muchas gracias de verdad.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas