Contenido
La función `FormatNumber` en VBA (Visual Basic for Applications) se utiliza para formatear números como cadenas con un número especificado de decimales, incluir o no separadores de miles, y definir si se deben mostrar los signos negativos. Aunque VBA tiene esta función incorporada, suele ser más común ver el uso de `Format` para tareas de formateo de números.
Aquí te comparto un ejemplo básico de cómo usar `FormatNumber`:
Sub EjemploFormatNumber()
Dim numero As Double
Dim numeroFormateado As String
' Asignar valor a numero
numero = 1234567.89123
' Usar FormatNumber
numeroFormateado = FormatNumber(numero, 2, True, vbFalse, vbFalse)
' Mostrar resultado
MsgBox numeroFormateado
End Sub
En este ejemplo, el número `1234567.89123` se formatea a una cadena con las siguientes especificaciones:
- `2` indica que queremos dos decimales.
- `True` establece que queremos usar el separador de miles.
- `vbFalse` (o su equivalente, `-1`) para `UseLeadingDigit` indica que sí queremos ceros a la izquierda si el número es menor que 1 y es positivo.
- `vbFalse` (o su equivalente, `-1`) para `GroupDigits` indica que no queremos paréntesis alrededor de los números negativos (es decir, el signo negativo estará al frente del número).
La función `FormatNumber` tiene los siguientes parámetros:
- `Expression`: Obligatorio. Es la expresión numérica que quieres formatear.
- `NumDigitsAfterDecimal`: Opcional. Especifica el número de dígitos que se mostrarán después del punto decimal. El valor predeterminado es `-1`, lo cual significa que se utilizará la configuración regional del sistema.
- `IncludeLeadingDigit`: Opcional. Puede ser `vbTrue`, `vbFalse`, o una de las siguientes constantes de VBA: `vbUseDefault`, o `vbTrue`. El valor predeterminado es `vbUseDefault`.
- `UseParensForNegativeNumbers`: Opcional. Puede ser `vbTrue`, `vbFalse`, o `vbUseDefault`. Indica si se deben usar paréntesis para los números negativos. El valor predeterminado es `vbUseDefault`.
- `GroupDigits`: Opcional. Puede ser `vbTrue`, `vbFalse`, o `vbUseDefault`. Indica si se deben agrupar los dígitos con separadores, como en `1,000` en lugar de `1000`. El valor predeterminado es `vbUseDefault`.
Es importante tener en cuenta que `FormatNumber` asumirá las configuraciones regionales actuales de tu entorno para determinar el carácter del punto decimal y los separadores de miles. Si necesitas controlar estos aspectos con más precisión o si estás buscando usar un formato específico que no sea dependiente del entorno regional, podrías considerar usar `Format` en lugar de `FormatNumber`. Con `Format`, podrías especificar el formato de número exacto que necesitas, como en el siguiente ejemplo:
Sub EjemploFormat()
Dim numero As Double
Dim numeroFormateado As String
' Asignar valor a numero
numero = 1234567.89123
' Usar Format
numeroFormateado = Format(numero, "#,##0.00")
' Mostrar resultado
MsgBox numeroFormateado
End Sub
En este caso, `#,##0.00` es el patrón de formato que dicta cómo queremos que se muestre el número: con dos dígitos después del punto decimal y utilizando comas como separadores de miles.