¿Qué es NUMBERFORMAT en VBA?
Numberformat es una función de VBA que nos permite modificar el formato de una fecha devolviendo un valor string* de la misma, de acuerdo a nuestro requerimientos.
Por ejemplo en excel usualmente el formato de fecha que aparece por default es “dd-mm-yyy”, pero usando el numberformat en VBA podemos obtener los siguientes resultados:
- “mm-dd-yyyy”
- “ddd-mm-yyyy”
- “mmm-yyyy”
- “ddd-mmm-yyyy”, etc.
Los formatos de fecha que podemos obtener oscilan entre los siguientes parámetros de acuerdo al lenguaje de referencia en VBA:
Años:
yyyy: aparecen los 4 dígitos del año
yy: aparecen los 2 últimos dígitos
Mes:
m: aparecen los números de los meses, en los casos del 1 al 9 aparece sin el cero adelante.
mm: aparece el número asignado al mes (del 1 al 12)
mmm: aparece la breviatura del nombre del mes (ejemplo: Abr)
mmmm: aparece el nombre completo del mes.
mmmmm: aparece la primera letra del nombre del mes (ejemplo: en el caso de Mayo aparece M)
Día:
d: aparecen los números de los días, en el caso del 1 al 9 sin el cero adelante.
dd: aparece los números de los días, del 1 al 31
ddd: aparece la abreviatura dle nombre del día (ejemplo: Lu)
dddd: aparece el nombre completo del día
En síntesis podemos obtener diferentes formatos de fecha dependiendo de lo que necesitemos.
*string: hace referencia a un tipo de variable que contiene texto.
Ejemplo de uso de NUMBERFORMAT en VBA
- Tenemos una base de datos con los nombres de 10 personas y sus dìas de nacimiento en el formato “dd-mm-yy”:
- Ingresamos a la ventana de VBA y digitamos lo siguiente:
Sub formatDates()
Dim ultmfila As Long
ultmfila = Hoja1.Cells(Rows.Count, 1).End(xlUp).Row
'MsgBox ultmfila
For i = 2 To ultmfila
'Cells(i, 2).NumberFormat = ("mm-dd-yyyy")
'Cells(i, 2).NumberFormat = ("ddd-mmm-yyyy")
'Cells(i, 2).NumberFormat = ("dd-mm-yyyy")
'Cells(i, 2).NumberFormat = ("mmm-yyyy")
'Cells(i, 2).NumberFormat = ("dd-yyyy")
Cells(i, 2).NumberFormat = ("yyyy-mmmmm-dd")
Next i
End Sub
Los comandos dim y as long nos permiten reconocer la dimensión de la tabla y reconocer hasta donde se tiene información. Luego con for indicamos a partir de donde queremos que se ejecuten los siguientes comandos (i=2 indica a partir de la segunda fila).
Los siguientes son ejemplos de los resultados de las fechas que salen ejecutando las diferentes filas:
Por: Priscila Condori
Descargar el ejemplo en Excel: Ejemplo NumberFormat
11/01/2018 a las 11:03 am
Buen día, me puede colaborar con una función que me inserte números (ceros) en unas posiciones específicas.
Tengo estos ejemplos.
1-4-986565
Por lo general el número debe contener doce dígitos y me debe quedar (014000986565) sin guiones y con los ceros que hacen falta.
dos antes del primer guión, en este caso debería ser 01
uno después del primer guión, en este caso debería ser 4
nueve números después del segundo guión - 000986565
12-1-98656565
Por lo general el número debe contener doce dígitos y me debe quedar (121098656565) sin guiones y con el cero que hace falta.
dos antes del primer guión, en este caso debería ser 12
uno después del primer guión, en este caso debería ser 1
nueve números después del segundo guión - 098656565
06/02/2019 a las 11:19 am
excelente, me permiti hacer el ejercicio e hice una modificación para tenerlo mas ilustrado, el cual comparto:
Sub formatDates()
Dim ultmfila As Long
ultmfila = Hoja1.Cells(Rows.Count, 1).End(xlUp).Row
'MsgBox ultmfila
For i = 2 To ultmfila
Cells(i, 2).NumberFormat = ("mm-dd-yyyy")
Cells(i, 3).NumberFormat = ("ddd-mmm-yyyy")
Cells(i, 4).NumberFormat = ("dd-mm-yyyy")
Cells(i, 5).NumberFormat = ("mmm-yyyy")
Cells(i, 6).NumberFormat = ("dd-yyyy")
Cells(i, 7).NumberFormat = ("yyyy-mmmmm-dd")
Cells(i, 8).NumberFormat = ("dddd"" ""dd"" de ""mmmm"" de ""yyyy")
Next i
End Sub
el último deja la fecha de esta forma: Jueves 12 de octubre de 2000.
saludos