Todoexpertos.com
http://www.todoexpertos.com
La respuesta está en Internet
Información de la pregunta
Título: mmm yo, si yo de nuevo
Experto: fejoal
Valoración: 5
Fecha: 27/11/2002


mmm yo, si yo de nuevo
Hola... Ahora tengo otra inquietud... resulta que cuando tu creas en una celda una formula la cual te arroja un resultado, este resultado puede ser por ejemplo 8.5625842 y el formato de celda se puede configurar para que muestre solo 3 decimales y quede asi, 8.552. Bueno hasta ahi ok, pero resulta que cuando yo leo el dato desde Visual Basic, me lee todos los decimales que realmente da la formula como resultado y por lo tanto me creara el texto con todos ellos y asi no me sirve... Ya probe de la siguiente manera (por ejemplo): txtX = Format(MyArea.Cells(a_fils, a_cols), "0.00") Y todo bien, el resultado me lo da tal como lo quiero, el problema viene ahora, cuando en una celda ahi un dato ingresado por el usuario y este le da 4 decimales, el programa me lo entregaria con 3 y eso es lo que no quiero. En resumente quiero saber como obtener el formato de una celda para saber cuantos decimales tiene y luego aplicarlos a cada celda mientras el programa recorra las celdas... Un saludo de SpeedCAD... :-)

Utiliza NumberFormat
Hola, SpeedCAD! La propiedad NumberFormat devuelve el formato numérico de una celda. Es decir que puedes cargar tu variable txtX con ese atributo como argumento de Format. Es decir: txtX = Format(MyArea.Cells(a_fils, a_cols), MyArea.Cells(a_fils, a_cols).NumberFormat) --- También puedes considerar la alternativa de usar un equivalente a la función REDONDEAR() dentro de VBA. De este modo efectivamente determinas la cantidad de decimales que tendrá la variable. Por ejemplo: VarRed = Application.WorksheetFunction.Round(555.698,2) cargará 555.70 en VarRed. Espero que esto te ayude. --- Respecto a tu pregunta anterior, es correcto lo que hiciste. Sin embargo hay redundancia. Si "Columna" está definido como boolean no es necesario colocar en el condicional: If Columna = True then basta con: If Columna Then además, como lo utilizas inmediatamente despues de cargar la variable estarías forzando un paso más (sin contar el de declarar la variable). Puedes colocar la instrucción directamente en el IF, con lo cual vuleves a algo parecido a lo que te había indicado en aquella primera respuesta. --- Finalmente, vi la página que me sugeriste. Como te dije, no conozco AutoCAD y la posibilida de leer datos de MS Excel está dentro de aquel programa. Bien por ti, que lo encontraste. Te mando un abrazo grande Fernando

Pregunta finalizada. Valoración: 5.
Muchas gracias Fernando, me solucionaste el problema, solo le tuve que agregar una sola cosa, que es lo siguiente: decimales = MyArea.Cells(a_fils, a_cols).NumberFormat If decimales = "General" Then txtX = MyArea.Cells(a_fils, a_cols) ElseIf decimales <> "General" Then txtX = Format(MyArea.Cells(a_fils, a_cols), decimales) End If Tuve que hacer esto porque cuando el formato era general en vez de poner, por ejemplo, un 1 pone GoGenral o algo asi, entonces puse el codigo de arriba y todo bien... Ahora con respecto a lo de vincular el dato de la celda con AutoCAD, no he encontrado la solucion, solo me imagino que se debe hacer con atributos de AutoCAD porque este tiene un identificador que de alguna manera esta vinculado con la celda de excel... Bueno te mando un gran abrazo, y si algun dia pillo la solucion al problema seras el primero en saberlo... Y no dudes en que te seguire preguntando Un saludo de SpeedCAD... :-)


Volver al mensaje
http://www.todoexpertos.com/categorias/tecnologia-e-internet/software-y-aplicaciones/microsoft-excel/respuestas/286912/mmm-yo-si-yo-de-nuevo