Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Función DateSerial

| 9 comentarios

Utilidad:
Devuelve un valor Date que representa un año, mes y día específicos, con la información de la hora establecida en medianoche (00:00:00).

-------------------------------
Public Function DateSerial( _
ByVal [Year] As Integer, _
ByVal [Month] As Integer, _
ByVal [Day] As Integer _
) As DateTime
-------------------------------

Parámetros:

Year
Obligatorio. Expresión Integer entre 1 y 9999. Sin embargo, los valores por debajo de este intervalo también se aceptan. Si Year está entre 0 y 99, se interpreta como si estuviera entre 1930 y 2029, tal y como se explica en la sección "Comentarios" que aparece a continuación. Si Year es menor que 1, se sustrae del año actual.
Month
Obligatorio. Expresión Integerentre 1 y 12. Sin embargo, los valores fuera de este intervalo también se aceptan. El valor de Month tiene un desplazamiento de 1 y se aplica al mes de enero del año calculado. En otras palabras, (Month - 1) se agrega al mes de enero. Si es necesario, se vuelve a calcular el año. Los resultados siguientes ilustran este efecto:
  • Si Month es 1, el resultado es el mes de enero del año calculado.
  • Si Month es 0, el resultado es el mes de diciembre del año anterior.
  • Si Month es -1, el resultado es el mes de noviembre del año anterior.
  • Si Month es 13, el resultado es el mes de enero del año siguiente.
Day
Obligatorio. Expresión Integerentre 1 y 31. Sin embargo, los valores fuera de este intervalo también se aceptan. El valor de Day tiene un desplazamiento de 1 y se aplica al primer día del mes calculado. En otras palabras, (Day - 1) se agrega al primer día del mes. Si es necesario, se vuelven a calcular el mes y el año. Los resultados siguientes ilustran este efecto:
  • Si Day es 1, el resultado es el primer día del mes calculado.
  • Si Day es 0, el resultado es el último día del mes anterior.
  • Si Day es -1, el resultado es el penúltimo día del mes anterior.
  • Si Day pasa del final del mes actual, el resultado es el día adecuado del mes siguiente. Por ejemplo, si Month es 4 y Day es 31, el resultado es el día 1 de mayo.

Ejemplo:

Sub Cumpleano()
'
Dim MiCumpleano As Date
' MiCumpleano contiene la fecha del 5 de Enero de 1974.
MiCumpleano = DateSerial(1974, 1, 5)   ' Return a date.
MsgBox MiCumpleano
End Sub

Elaborado por: Jorge Quispe

9 comentarios

  1. Haciendo un ejemplo simple de esta función, pero con datos de celdas que corresponden a dia (A2), mes (B2) y año(c2); el resultado de la fecha ya formateada utilizando la función se mostrará en en la celda D2:

    Sub FechaDateSerial()
    Dim dia As String
    Dim mes As String
    Dim año As String
    dia = Range("A2").Value
    mes = Range("B2").Value
    año = Range("C2").Value
    Range("D2").Select
    ActiveCell.FormulaR1C1 = DateSerial(año, mes, dia)
    End Sub

  2. Este es una funcion solo de VB o tambien de hoja excel?

  3. Muy interesante osea que si por error ingresamos un número que no está comprendido en el intervalo correcto, el programa calculará la fecha sin importar el año, mes o día indicado. Por ejemplo:

    Sub Cumpleanos()

    Dim MiCumpleanos As Date
    MiCumpleanos = DateSerial(1989, 8, 35)
    MsgBox MiCumpleanos
    End Sub

    Esto nos arrojará un mensaje con la fecha 04/09/1989, ya que para el mes de agosto solo tenemos 31 días y los 4 días restantes pertenecerían al mes de setiembre.

    • Muy cierto su comentario srta Tsitsela, lo mismo ocurre para el intervalo meses, lo reconoce como si fuese el mes inmediato posterior.
      Sub Cumpleanos()

      Dim MiCumpleanos As Date
      MiCumpleanos=DateSerial(1969,13,25)
      MsgBox MiCumpleanos

      End Sub

      Esto nos arroja 25/01/1970, Interesante¡¡!!

  4. Me parece muy interesante el comentario de Junior, pues muestra una forma diferente de utilizar la función DateSerial y responde la pregunta de Jose.

    Otro ejemplo para la función DateSerial es el siguiente:

    Sub FechaCumpleanos()

    Dim MiCumpleanos As Date
    MiCumpleanos=DateSerial(61,-1,25)
    MsgBox MiCumpleanos
    End Sub

    Esto nos arroja 25/11/1990.
    Ya que el año "0" equivale al año 1930, por lo tanto el año "61" equivale al año 1991. Por otro lado, el mes "-1" equivale al mes de noviembre del año anterior, por esta razón el año es que se indica es el de 1990.

  5. La función es buena, pero como se podría realizar una validación previa para el registro de datos?

  6. No conocia esta funci{on asi que tambien puedo introducir en los parametros formulas matemáticas, y estos me arrojaran una fecha que responda a dicha ecuació.
    Si esto es posible, podriamos emplearlo en el calculo.

  7. Esta fórmula es muy interesante, en el trabajo controlamos las horas de operación de los motores, algunos de ellos no son continuos entonces con esta fórmula podremos calcular rápidamente la fecha probable de trabajos de mantenimiento según la cantidad de horas trabajadas. Claro está que la cantidad de horas las pasaríamos a días y así aplicar la formula comparándolo con la fecha actual.

    Interesante!

  8. alguna persona que pueda ayudarme para crear un codigo en VBA en excel que permita buscar datos a partir de una lista de microsoft acces

Deja una respuesta

Los campos requeridos estan marcados con *.