Hace unos días, realizando un pequeño programa de cálculo a través un userform, donde ingresaba números, realizaba operaciones y finalmente volcaba los datos a una celda de una hoja Excel, me di cuenta que tenía un problema, él resultado de la fórmula quedaba grabado en la celda como un número almacenado como texto.

Esto era un problema, sobre todo porque a partir de ese resultado tenía que realizar otras operaciones y algunos formatos condicionales que no funcionan si trabajamos con números «corrientes» y números almacenados con formato de texto.

La solución fue mucho más sencilla de lo que me esperaba. Os expongo aquí un ejemplo, primero el problema y luego la solución.
Imaginemos la siguiente macro, que lo que hace es trasladar los números de la "hoja2" a la "hoja1" en la celda 1 de la columna 1 y en la celda 1 de la columna 2.

Pues bien, si los números están almacenados como texto en la "hoja2" los trasladará a la «hoja1» con el mismo formato. (para probar podéis poner un número cualquiera en las celdas comentadas precedido de un apóstrofe, ej. ’45 de esta forma es como si fuese texto).

Private Sub Número_texto()
Application.Worksheets(«Hoja1»).Cells(1, 1) = (Hoja2.Cells(1, 1))
Application.Worksheets(«Hoja1»).Cells(1, 2) = (Hoja2.Cells(1, 2))

End Sub

La solución, y os dejo la macro completa:

Private Sub UserForm_Click()

Application.Worksheets(«Hoja1»).Cells(1, 1) = CDbl(Hoja2.Cells(1, 1))
Application.Worksheets(«Hoja1»).Cells(1, 2) = CDbl(Hoja2.Cells(1, 2))

Application.Worksheets(«Hoja1»).Columns(1).NumberFormat = «#,##0»
Application.Worksheets(«Hoja1»).Columns(2).NumberFormat = «#,##0»
End Sub

La clave está en colocar la función CDbl justo delante de los datos que se refieren a la «hoja2», de esta forma formatearemos los número almacenados como texto en números «corrientes».

Adicionalmente os dejo también la posibilidad de darle un formato visual más estético a las cantidades definiendo el punto separador de los miles: .NumberFormat = "#,##0"Espero que os haya ayudado este pequeño truco, a mi me ha solucionado un problema importante y sobre todo me ha ahorrado mucho tiempo en buscar soluciones alternativas.

Saludos 😉

Comparte este post