Tabla de contenido
En Microsoft Visual Basic Application, las funciones de fecha o cualquier concepto relacionado con la fecha son esenciales para realizar diversas operaciones en su conjunto de datos. Es posible que se encuentre en varias situaciones en las que tendrá que utilizar estas funciones. En este tutorial, aprenderá acerca de la función Fecha de VBA con ejemplos adecuados e ilustraciones apropiadas. Además, le proporcionaremos varias funciones de fechaque puede implementar en su hoja de cálculo.
Descargar el cuaderno de prácticas
Usos de VBA Date.xlsm
Introducción a la función Fecha de VBA
Excel categoriza las Fechas en Fecha/Hora Es una función incorporada que podemos utilizar en macros VBA para realizar cualquier operación relacionada con la fecha.
Antes de empezar con la función Fecha, hay que conocer la función Variables de fecha en VBA .
⏺ Sintaxis
Fecha()⏺ Argumentos Explicaciones
No hay argumentos.
⏺ Devoluciones
Devuelve la fecha actual.
Disponible en
Excel para Office 365, Excel 2019, Excel 2016, Excel 2013, Excel 2011 para Mac, Excel 2010, Excel 2007, Excel 2003, Excel XP, Excel 2000.
⏺ Ejemplo
Como sabes, no hay argumentos, sólo puedes introducirlo de la siguiente manera:
Sub vba_date() Dim current_date As Date current_date = Date MsgBox current_date End Sub
Cuando trabajamos con la función Fecha, no ponemos ningún paréntesis en los códigos VBA como en este ejemplo.
Salida :
12 funciones de fecha en VBA que debe aprender
Ahora, en las próximas secciones, le mostraremos algunas funciones de fecha adicionales que puede utilizar para numerosos propósitos en VBA. Lea estas secciones para conocer todas las formas posibles de trabajar con la fecha en VBA. Le sugerimos que las guarde en su arsenal, seguramente mejorará sus conocimientos.
1. Función DateAdd como Fecha en VBA
En VBA, utilizamos la función DateAdd para añadir días en una fecha determinada. Después, nos devolverá la fecha resultante.
Sintaxis:
DateAdd(intervalo, número, fecha)
Argumentos:
intervalo: La expresión String es el intervalo de tiempo que desea añadir.
número: Obligatorio. Es una expresión numérica que es el número de intervalos que se quieren sumar. Puede ser positivo (para obtener fechas en el futuro) o negativo (para obtener fechas en el pasado).
fecha: La fecha/hora original.
Ahora, el intervalo pueden tener las siguientes configuraciones:
aaaa - Año
q - Cuarto
m - Mes
y - Día del año
d - Día
w - Entre semana
ww - Semana
h - Hora
n - Minuto
s - Segundo
Fragmento de código :
Sub dateadd_function() Dim result_Date As Date result_Date = DateAdd("d", 15, "1/31/2022") MsgBox result_Date End Sub
Salida:
Como puede ver, añadió 15 fechas en la fecha actual en VBA.
Más información: Cómo Usar la Función IsDate en VBA (3 Ejemplos)
2. Función DateDiff en VBA
La función DateDiff devuelve una Variante (Long) que determina el número de intervalos de tiempo entre dos fechas especificadas.
Sintaxis :
DateDiff(interval, date1, date2, [ firstdayofweek, [ firstweekofyear ]] )
Argumentos:
intervalo: Es Obligatorio. Expresión de cadena es el intervalo de tiempo que desea añadirExpresión de cadena que es el intervalo de tiempo que utiliza para calcular la distinción entre dos fechas.
fecha1,fecha2 : Obligatorio; Variante (Fecha). Dos fechas que desea utilizar en el cálculo.
primer día de la semana: Opcional. Constante que define el primer día de la semana. Si no se fija, se asume el domingo.
primera semana del año: Opcional. Constante que establece la primera semana del año. Si no se establece, se supone que la primera semana es aquella en la que aparece el 1 de enero.
Ahora, el intervalo pueden tener las siguientes configuraciones:
aaaa - Año
q - Cuarto
m - Mes
y - Día del año
d - Día
w - Entre semana
ww - Semana
h - Hora
n - Minuto
s - Segundo
En primer día de la semana tiene estas opciones:
vbSunday - utiliza el domingo como primer día de la semana.
vbMonday - emplea el lunes como primer día de la semana.
vbMartes - opera el martes como primer día de la semana.
vbMiércoles - emplea el miércoles como primer día de la semana.
vbJueves - opera el jueves como día de la semana.
vbViernes - emplea el viernes como primer día de la semana.
vbSábado - opera el sábado como primer día de la semana.
vbUseSystemDayOfTheWeek - utiliza el primer día de la semana definido por la configuración de su dispositivo.
En primera semana del año tiene estos ajustes:
vbPrimerEnero1 - utiliza la semana que contiene el 1 de enero.
vbPrimerosCuatroDías - emplea la primera semana que tiene al menos cuatro días en el nuevo año.
vbFirstFullWeek - funciona la primera semana completa del año.
vbSistema - utiliza la primera semana del año según la ubicación de su dispositivo.
Fragmento de código:
Sub DateDiff_Function() Dim result As Long result = DateDiff("d", "1/31/2022", "2/12/2022") MsgBox result End Sub
Salida :
Al final, devuelve la diferencia entre las dos fechas en VBA.
Más información: Cómo Usar la Función DateDiff de VBA en Excel (9 Ejemplos)
3. Función DatePart como Date
La función DatePart devuelve una Variant (Integer) que contiene la parte definida de una fecha proporcionada.
Sintaxis :
DatePart(intervalo, fecha, [ primer día de la semana, [ primera semana del año ]])
Argumentos:
intervalo: Es Obligatorio. Expresión de cadena es el intervalo de tiempo que desea añadirExpresión de cadena que es el intervalo de tiempo que utiliza para calcular la distinción entre dos fechas.
fecha: Obligatorio; Variante (Fecha). La fecha que desea utilizar en el cálculo.
primer día de la semana: Opcional. Constante que define el primer día de la semana. Si no se fija, se asume el domingo.
primera semana del año: Opcional. Constante que establece la primera semana del año. Si no se establece, se supone que la primera semana es aquella en la que aparece el 1 de enero.
Ahora, el intervalo pueden tener las siguientes configuraciones:
aaaa - Año
q - Cuarto
m - Mes
y - Día del año
d - Día
w - Entre semana
ww - Semana
h - Hora
n - Minuto
s - Segundo
En primer día de la semana tiene estas opciones:
vbSunday - utiliza el domingo como primer día de la semana.
vbMonday - emplea el lunes como primer día de la semana.
vbMartes - opera el martes como primer día de la semana.
vbMiércoles - emplea el miércoles como primer día de la semana.
vbJueves - opera el jueves como día de la semana.
vbViernes - emplea el viernes como primer día de la semana.
vbSábado - opera el sábado como primer día de la semana.
vbUseSystemDayOfTheWeek - utiliza el primer día de la semana definido por la configuración de su dispositivo.
En primera semana del año tiene estos valores:
vbPrimerEnero1 - funciona la semana que incluye el 1 de enero.
vbPrimerosCuatroDías - utiliza la primera semana que posee a lo sumo de tamaño inferior a cuatro días en el nuevo año.
vbFirstFullWeek - utiliza la primera semana completa del año.
vbSistema - emplea la primera semana del año seleccionada por las ubicaciones de sus dispositivos.
Fragmento de código :
Sub DatePart_Function() Dim result As Integer resultado = DatePart("m", "10/11/2022") MsgBox resultado End Sub
Salida :
De este modo, puede utilizar esta función de fecha en códigos VBA.
Más información: Cómo utilizar la función VBA FileDateTime en Excel (3 usos)
4. Función DateSerial
Puede ver una fecha basada en un año, mes y día introducidos utilizando la función FechaSerial función.
Sintaxis:
DateSerial(año, mes, día)
Argumentos:
año - Campo obligatorio. Un número entre 100 y 9999, ambos inclusive, o una expresión numérica que simbolice el año.
mes - Campo obligatorio. Valor entero que define el mes.
día - Campo obligatorio. Valor entero que describe el día.
Fragmento de código:
Sub date_serial() Dim date_special As Date date_special = DateSerial(2022, 1, 11) MsgBox date_special End Sub
Salida :
Más información: Cómo Usar VBA TimeSerial en Excel (3 Ejemplos)
4. Función DateValue de VBA
Ahora, utilizamos la función DateValue para definir una fecha.
Sintaxis :
DateValue(fecha)
Argumento:
Aquí, el fecha suele ser una expresión de cadena que describe una fecha comprendida entre el 1 de enero de 100 y el 31 de diciembre de 9999. Independientemente de ello, la fecha puede ser, además, cualquier expresión que pueda simbolizar una fecha, una hora o tanto una fecha como una hora en ese intervalo.
Fragmento de código:
Sub Date_value() Dim result As Date result = DateValue("Enero, 10, 2022") MsgBox result End Sub
Salida :
Como puede ver, hemos utilizado con éxito la función de fecha en los códigos VBA.
5. Función Día en VBA
Devuelve una Variante (Entero) que determina un número real entre 1 y 31, ambos inclusive, que transmite el día del mes.
Sintaxis :
Día(fecha)
Argumento:
El argumento de fecha requerido es cualquier Variant, expresión numérica, expresión de cadena o cualquier combinación. Representa una fecha. Si la fecha incluye Null, también devolverá Null.
Fragmento de código:
Sub day_function() Dim date1, the_day date1 = #12/12/2023# the_day = Day(date1) MsgBox the_day End Sub
Salida:
Como puede ver, utilizando los códigos VBA encontramos que el día de la fecha dada es 12.
Contenido relacionado: Función VBA Formato en Excel (8 Usos con Ejemplos)
6. Función VBA Mes como Fecha
Devuelve una Variante (Entero) que define un número real entre 1 y 12, ambos inclusive, que transmite el mes del año.
Sintaxis :
Mes(fecha)
Argumento:
El argumento de fecha requerido es cualquier Variant, expresión numérica, expresión de cadena o cualquier combinación. Representa una fecha. Si la fecha incluye Null, también devolverá Null.
Fragmento de código:
Sub month_function() Dim date1, the_month date1 = #12/12/2023# the_month = Month(date1) MsgBox the_month End Sub
Salida:
Contenido relacionado: Cómo utilizar la función VBA Derecho en Excel (6 Ejemplos)
Lecturas similares
- Cómo utilizar la función Environ de VBA (4 ejemplos)
- Cómo utilizar VBA y función en Excel (4 ejemplos)
- Declaración VBA If - Then - Else en Excel (4 Ejemplos)
- Cómo Utilizar la Función Abs de VBA en Excel (9 Ejemplos)
- Cómo utilizar Concatenar en Excel VBA (4 métodos)
7. Función MonthName
Devuelve una cadena que demuestra el mes especificado.
Sintaxis :
NombreMes(mes, [ abreviatura ])
Argumento:
mes: Es obligatorio. El título numérico del mes. Por ejemplo, enero es 1, febrero es 2, etc.
abreviar: Es Opcional. Valor booleano que demuestra si se debe abreviar el nombre del mes. Si se omite, el valor por defecto es Falso, lo que indica que no se abrevia el nombre del mes.
Fragmento de código:
Sub Función_nombre_mes() Dim nombre_mes As String nombre_mes = Nombre_mes(9, True) MsgBox nombre_mes End Sub
Salida:
Como puede ver, encontramos el nombre del mes por esta función de fecha VBA.
8. Función del día de la semana
Devuelve un Variante ( Entero ) que posee un número real que expresa el día de la semana.
Sintaxis :
Día de la semana(fecha, [ primerdía de la semana ])
Argumento:
fecha: El argumento de fecha requerido es cualquier Variant, expresión numérica, expresión de cadena o cualquier combinación. Representa una fecha. Si la fecha incluye Null, también devolverá Null.
primer día de la semana: Opcional. Constante que define el primer día de la semana. Si no se fija, se asume el domingo.
En primer día de la semana tiene estas opciones:
vbSunday - utiliza el domingo como primer día de la semana.
vbMonday - emplea el lunes como primer día de la semana.
vbMartes - opera el martes como primer día de la semana.
vbMiércoles - emplea el miércoles como primer día de la semana.
vbJueves - opera el jueves como día de la semana.
vbViernes - emplea el viernes como primer día de la semana.
vbSábado - opera el sábado como primer día de la semana.
vbUseSystemDayOfTheWeek - utiliza el primer día de la semana definido por la configuración de su dispositivo.
Parámetros de retorno
Ahora bien, esta función devuelve un número entero. Por lo tanto, el significado de esos enteros es el siguiente:
1 - Domingo
2 - lunes
3 - martes
4 - Miercoles
5 - Jueves
6 - viernes
7 - sábado
Fragmento de código:
Sub Weekday_Function() Dim week_day As Integer week_day = Weekday("4/27/2022") MsgBox week_day End Sub
Salida:
Como puede ver, la función de fecha de VBA devuelve 4. Eso significa miércoles.
Contenido relacionado: Cómo utilizar la función Fix en Excel VBA (4 Ejemplos)
9. Función VBA WeekdayName
Devuelve una cadena que muestra el día de la semana confinado.
Sintaxis :
WeekdayName(díadelasemana, abreviatura, primerdíadelasemana)
Argumento:
entre semana: Campo obligatorio. La identificación numérica del día de la semana. El valor numérico de cada día depende de la configuración del ajuste firstdayofweek.
abreviar: Opcional. Valor booleano que implica si el nombre del día de la semana debe abreviarse. Si se omite, el valor por defecto es False, lo que significa que el nombre del día de la semana no se abrevia ni acorta.
primer día de la semana: Campo opcional. Valor numérico que indica el primer día de la semana. Puede tener varios valores.
En primer día de la semana puede tener los valores siguientes:
vbSunday - utiliza el domingo como primer día de la semana.
vbMonday - emplea el lunes como primer día de la semana.
vbMartes - opera el martes como primer día de la semana.
vbMiércoles - emplea el miércoles como primer día de la semana.
vbJueves - opera el jueves como día de la semana.
vbViernes - emplea el viernes como primer día de la semana.
vbSábado - opera el sábado como primer día de la semana.
vbUseSystemDayOfTheWeek - utiliza el primer día de la semana definido por la configuración de su dispositivo.
Fragmento de código:
Sub WeekdayName_Function() Dim weekday_name As String weekday_name = WeekdayName(6) MsgBox weekday_name End Sub
Salida:
Como puede ver, los códigos VBA anteriores muestran el nombre del día de la semana.
Contenido relacionado: Cómo usar la función VBA WeekdayName en Excel (2 ejemplos)
10. Función Año en VBA Fecha
Devuelve una Variante (Entero) que tiene un número real que expresa el año.
Sintaxis :
Año(fecha)
Argumento:
El argumento de fecha requerido es cualquier Variant, expresión numérica, expresión de cadena o cualquier combinación. Representa una fecha. Si la fecha incluye Null, también devolverá Null.
Fragmento de código:
Sub year_function() Dim date1, the_year date1 = #12/12/2023# the_year = Year(date1) MsgBox the_year End Sub
Salida:
Aquí puede ver el año de la fecha dada después de implementar el código VBA.
Más información: Cómo utilizar la función VBA Reemplazar en Excel (11 Aplicaciones)
11. Función FormatDateTime
Esta función devuelve una expresión formateada como fecha u hora.
Sintaxis :
FormatDateTime(Fecha, [ NamedFormat ])
Argumento:
Date: Campo obligatorio. Expresión de fecha a formatear.
NamedFormat: Es opcional. Se trata de un valor numérico que muestra el formato fecha/hora. Si se omite, utiliza el formato vbFechaGeneral .
En NamedFormat puede tener los siguientes valores:
vbGeneralDate(0): Muestra una fecha y/o una hora. Si hay una parte de fecha, exprésela como una fecha corta. Si hay una parte de hora, exprésela como una hora larga. Ambas partes se exhiben si están presentes.
vbLongDate(1): Represente una fecha utilizando la configuración de fecha larga seleccionada en la configuración regional de su ordenador.
vbShortDate(2): Muestra una fecha utilizando el formato de fecha abreviado especificado en la configuración regional de tu ordenador.
vbLongTime(3): Muestra una hora empleando el formato de hora especificado en la configuración regional de tu ordenador.
vbShortTime(4): Muestra una hora utilizando el formato de 24 horas (hh:mm).
Fragmento de código:
Sub FormatDateTime_Function() d = ("2022-02-03 18:25") MsgBox ("Formato 1 : " & FormatDateTime(d)) MsgBox ("Formato 2 : " & FormatDateTime(d, 1)) MsgBox ("Formato 3 : " & FormatDateTime(d, 2)) MsgBox ("Formato 4 : " & FormatDateTime(d, 3)) MsgBox ("Formato 5 : " & FormatDateTime(d, 4)) End Sub
Salida:
Verá los siguientes cuadros de diálogo después de ejecutar el código:
Aquí puede ver todos los formatos de fecha y hora en VBA.
Más información: Cómo utilizar la función TimeValue de VBA (6 ejemplos relevantes)
12. Función CDate de VBA
La función convierte una expresión válida de fecha y hora en una fecha típica.
Sintaxis :
CDate(fecha)
Argumento:
El argumento de fecha requerido es cualquier Variant, expresión numérica, expresión de cadena o cualquier combinación. Representa una fecha. Si la fecha incluye Null, también devolverá Null.
Fragmento de código:
Sub Cdate_Function() Dim date1 As Variant Dim date2 As Variant date1 = CDate("Mar 11 2022") date2 = CDate("29 Sep 2023") MsgBox ("Primera fecha : " & date1 & vbCrLf & "Segunda fecha : " & date2) End Sub
Salida:
Como puede ver, nuestro código VBA acaba de devolver un formato de fecha típico de Excel.
Contenido relacionado: Cómo utilizar la función DIR de VBA en Excel (7 ejemplos)
Ejemplos de VBA Date
En las siguientes secciones, le proporcionaremos tres ejemplos prácticos y adecuados de fecha utilizando VBA. Estos ejemplos contendrán problemas relacionados con la fecha y sus soluciones. Le recomendamos que lea y practique todos estos ejemplos para mejorar sus conocimientos de VBA. Entremos en materia.
1. Calcular los días de retraso utilizando la fecha en VBA
El significado de overdue es suceder tarde, o pasado el plazo. Late, particularmente, pasado un plazo o demasiado tarde para cumplir un requisito.
Supongamos que tienes que entregar un trabajo que vence el domingo. Pero es martes y no lo has entregado. Puedes llamarlo dos días de retraso.
Eche un vistazo al siguiente conjunto de datos:
Aquí, tenemos un conjunto de datos de algunos estudiantes y su fecha de entrega de la tarea. Usted puede ver la última fecha de presentación. Nuestro objetivo es encontrar la fecha de vencimiento sobre la base de la fecha de presentación. Ahora, para lograr esto, siga estos pasos:
📌 Pasos
- En primer lugar, pulse Alt+F11 en el teclado para abrir el editor VBA.
- A continuación, seleccione Insertar> Módulo .
- A continuación, escriba el siguiente código:
Sub overdue_days() Dim cell As Integer Dim J As Integer Dim due_date As Date due_date = #1/11/2022# For cell = 5 To 11 If Cells(cell, 4).Value = due_date Then Cells(cell, 5).Value = "Presentado hoy" ElseIf Cells(cell, 4).Value> due_date Then J = due_date - Cells(cell, 4).Value J = Abs(J) Cells(cell, 5).Value = J & " Días atrasados" Else Cells(cell, 5).Value = "No atrasado" End If Next cellFin Sub
Utilizamos la función ABS para eliminar el signo menos.
- A continuación, guarda el archivo.
- A continuación, pulse Alt+F8 en el teclado para abrir el cuadro de diálogo Macro.
- A continuación, seleccione
- A continuación, haga clic en Ejecutar .
Como puede ver, hemos utilizado con éxito la fecha en VBA y hemos encontrado los días atrasados.
Lecturas similares
- Cómo utilizar la función de espacio VBA en Excel (3 ejemplos)
- Uso de la Función VBA ChDir en Excel (4 Ejemplos Adecuados)
- Cómo utilizar la función IsNull en Excel VBA (5 Ejemplos)
- Utilizar la sentencia While Wend de VBA en Excel (4 Ejemplos)
- Cómo llamar a un Sub en VBA en Excel (4 Ejemplos)
2. Buscar el año de nacimiento a partir de la fecha utilizando VBA
Ahora puedes encontrar el Año a partir de una fecha determinada, lo cual es bastante sencillo.
Eche un vistazo al siguiente conjunto de datos:
Aquí puede ver la fecha de nacimiento de algunas personas. Nuestro objetivo es extraer el año de nacimiento de la fecha y también el año de nacimiento de la última entrada Elizabeth.
📌 Pasos
- En primer lugar, pulse Alt+F11 en el teclado para abrir el editor VBA.
- A continuación, seleccione Insertar>Módulo .
- A continuación, escriba el siguiente código:
Sub find_year() Dim last_entry As Date Dim cell As Integer For cell = 5 To 11 Cells(cell, 4).Value = Year(Cells(cell, 3).Value) If cell = 11 Then last_entry = Cells(cell, 3).Value End If Next cell MsgBox "Año de nacimiento de la última entrada: " & Year(last_entry) End Sub
- A continuación, guarda el archivo.
- A continuación, pulse Alt+F8 en el teclado para abrir el cuadro de diálogo Macro.
- A continuación, seleccione encontrar_año .
- A continuación, haga clic en Ejecutar .
Por último, se puede ver que tenemos éxito en la extracción del año de nacimiento de cada fecha. Además, encontramos el año de nacimiento de la última entrada utilizando la fecha de VBA en Excel.
3. Añadir días en la fecha utilizando VBA
Ahora, puede definir la variable de fecha y utilizarla para añadir la fecha. Para ello, utilizamos la FechaAñadir de VBA. Puede utilizar esta función para añadir días, meses y años a una fecha determinada.
Eche un vistazo al siguiente conjunto de datos:
Aquí puede ver algunos nombres y algunas fechas asociadas a ellos. Ahora, nuestro objetivo es añadir cinco días más a estas fechas dadas y generar una nueva fecha.
📌 Pasos
- En primer lugar, pulse Alt+F11 en el teclado para abrir el editor VBA.
- A continuación, seleccione Insertar>Módulo .
- A continuación, escriba el siguiente código:
Sub add_days() Dim first_date As Date Dim second_date As Date Dim cell As Integer For cell = 5 To 11 first_date = Cells(cell, 3).Value second_date = DateAdd("d", 5, first_date) Cells(cell, 4).Value = second_date Next cell End Sub
Aquí hemos utilizado "d" como argumento en la función DateAdd. Puedes cambiarlo por "y" o "m" para añadir años o meses respectivamente,
- A continuación, guarda el archivo.
- A continuación, pulse Alt+F8 en el teclado para abrir el cuadro de diálogo Macro.
- A continuación, seleccione.
- A continuación, haga clic en Ejecutar .
Como puede ver, hemos añadido con éxito días en una fecha utilizando la fecha en VBA. Ahora, puede modificar el código de acuerdo a su elección.
💬 Cosas para recordar
✎ La función Date de VBA en realidad funciona como la función HOY en Excel.
✎ VBA DATE es una función no volátil de Excel, lo que significa que conservará los datos incluso en caso de interrupción del suministro eléctrico.
✎
Básicamente, VBA guarda los valores de Fecha como FECHA en el momento de la implementación.
✎
Por lo tanto, si intenta asignar una variable de fecha como cadena/texto, se producirá un error.
✎
El valor por defecto de Fecha es 0:00:00 (medianoche) del 1 de enero de 0001.
Conclusión
Para concluir, espero que este tutorial le haya proporcionado un conocimiento útil sobre la Fecha en los códigos VBA. Le recomendamos que aprenda y aplique todas estas instrucciones a su conjunto de datos. Descargue el libro de ejercicios de práctica y pruébelas usted mismo. Además, no dude en darnos su opinión en la sección de comentarios. Su valiosa opinión nos mantiene motivados para crear tutoriales como éste.
No olvide consultar nuestro sitio web Exceldemy.com para diversos problemas y soluciones relacionados con Excel.
Siga aprendiendo nuevos métodos y siga creciendo.