Utilizar formatos de números en Excel VBA

Glen Alfaro 30 enero 2023
  1. Implementar la propiedad NumberFormat en valores numéricos VBA
  2. Obtenga el tipo de NumberFormat utilizado por un rango de VBA
Utilizar formatos de números en Excel VBA

Los números vienen en diferentes formas en nuestra vida diaria. Tenemos fechas, precios, porcentajes, fracciones, decimales, etc. Todos pueden parecer diferentes, pero todos significan un valor.

Lo mismo con Excel, podemos manejar diferentes formatos de números. Podemos usar los tipos de datos Date y Time cuando tratamos con fechas y horas, mientras que podemos usar Percent cuando tratamos con porcentajes.

Este artículo demostrará la propiedad NumberFormat para ayudarnos a utilizar y manejar adecuadamente los números a lo largo de nuestra práctica de Excel VBA.

Implementar la propiedad NumberFormat en valores numéricos VBA

Esta sección utiliza la propiedad NumberFormat para cambiar el formato de número en una celda.

Sintaxis:

Range.NumberFormat = [FormatCodes]

Parámetros:

Range El rango a formatear
[FormatCodes] Cadenas predeterminadas que representarán qué tipo de formato de número se utilizará.

Matriz [códigos de formato]:

Nombre del formato Código de formato Ejemplo Descripción
—————– ——————————————————– —————– ——————————————————
General General 1234567.89 mostrar el número sin formato específico
Divisa $#,##0.00 $1,234,567.89 mostrar como valores monetarios generales
Número 0 1234567.89 El formato mostrará el número exactamente como es.
Científico 0.00E+00 1.23E+06 convertir el número a formato exponencial
Contabilidad _($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_) $123.00 display the number used in Contabilidad
Fecha m/d/yy 11/23/2021 mostrar los números de serie de la fecha y la hora
Hora [$-F400]h:mm:ss am/pm 12:00:03 AM mostrar los números de serie de la fecha y la hora
Porcentaje 0.00% 5.23 % mostrar el valor en forma de porcentaje
Fracción # ?/? 1/4 mostrar el valor como forma fraccionaria
Especial ;; 000-00-0000 formatos usados ​​en valores de lista y base de datos

La hoja de trabajo virtual Sheet1 serán los valores de referencia utilizados en todos los ejemplos a continuación para los códigos de ejemplo a continuación.

Hoja1:

 |    A    |      B      |      C    |
1| 1234.56 | 11/23/2021  | 93249812  |
2| 5       | 0.00004     | 0.25      |

El siguiente bloque de código generará el formato General:

Sub FormatGeneral()
Range("A1").NumberFormat = "General"
Debug.Print Range("A1").Text
End Sub

Salida FormatGeneral:

1234.56 

El siguiente bloque de código generará el formato de Moneda:

Sub FormatCurrency()
Range("C1").NumberFormat = "$#,##0.00"
Debug.Print Range("C1").Text
End Sub

Salida General:

$93,249,812.00

El siguiente bloque de código generará formato Científico:

Sub FormatScientific()
Range("C1").NumberFormat = "0.00E+00"
Debug.Print Range("C1").Text
End Sub

Salida FormatScientific:

9.32E+07

El siguiente bloque de código generará el formato Contabilidad:

Sub FormatAccounting()
Range("A1").NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
Debug.Print Range("A1").Text
End Sub

Salida FormatAccounting:

 $ 1,234.56 

El siguiente bloque de código generará el formato de Date:

Sub FormatDate()
Range("A2").NumberFormat = "m/d/yy"
Debug.Print Range("A2").Text
End Sub

Salida FormatDate:

1/5/00

El siguiente bloque de código generará el formato Time:

Sub FormatTime()
Range("B2").NumberFormat = "$-F400]h:mm:ss am/pm"
Debug.Print Range("B2").Text
End Sub

Salida FormatTime:

12:00:03 AM

El siguiente bloque de código generará el formato Porcentaje:

Sub FormatPercentage()
Range("A1").NumberFormat = "0.00%"
Debug.Print Range("A1").Text
End Sub

Salida FormatPercentage:

123456.00%

El siguiente bloque de código generará el formato Fracción:

Sub FormatFraction()
Range("C2").NumberFormat = "# ?/?"
Debug.Print Range("C2").Text
End Sub

Salida FormatFraction:

1/4

Obtenga el tipo de NumberFormat utilizado por un rango de VBA

Devolvimos el valor formateado del rango especificado en los ejemplos anteriores. Obtendremos el tipo de formato utilizado en el rango especificado en esta sección.

Sintaxis:

Range.NumberFormat

Parámetros:

Range El rango de celdas para obtener el tipo de formato.

Aún refiriéndose a Sheet1, los bloques de código de ejemplo a continuación demostrarán la devolución del tipo de formato utilizado por el rango especificado.

Sub GetFormattingType()
Debug.Print Range("B1").NumberFormat
End Sub

Salida GetFormattingType:

m/d/yyyy