Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Como determinar ultimo dia de una fecha


.

Me preguntan en un foro la forma de determinar cual es el último día de una fecha dada, es algo que parece tan simple, sin embargo a la hora de tratar determinarlo trae algún que otro dolor de cabeza, o por lo menos una pérdida de tiempo en tratar de encontrar la solución, es por ello que voy a mostrar como se determina el último día de una fecha, normalmente se requiere saber para asignarla a una variables como por ejemplo cuando se busca datos y se tiene una fecha intermedia, requiriendo buscar datos desde el primer al último día del mes de la fecha seleccionada.

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

  

La función DateSerial devuelve un dato tipo Variant para un día , mes y año especificado, usando una expresión numérica se puede representar años, meses o días antes o después de una fecha determinada; la sintaxis de la función es la siguiente:

DateSerial(Año, Mes, Dia)

El significado de los parámetros son:

Año es un dato obligatorio tipo interger, es un número entre 100 y 9999 o también puede ser una expresión numérica como por ejemplo (2020-5) se esta refiriendo al año 2015.


Mes dato obligatorio tipo interger, admite un número o expresión numérica por ejemplo (12-2) se esta refiriendo al mes 10 es decir octubre o por ejemplo 5+3, se esta refiriendo al mes 8; admite número entre 1 y 12 que son los meses del año.


Dia Arg30, es un dato obligatorio, tipo interger, admite un número o expresión numérica que va entre 0 y 31, cero representa el último día del mes anterior, uno el primer día y así sucesivamente; se puede usar una expresión numérica como la siguiente (31-2) se esta refiriendo al día 29 de la fecha dada, también se puede usar la siguiente expresión (20+2) representa el día 22 del mes seleccionado.


En el ejemplo que podrás descargar desde el final de la página, encontrarás un botón que tiene asignada la macro que permite determinar el último día de la fecha que se encuentra en la celda B2, tambíén se determina el primer día de la fecha, el año, mes y día de la fecha de la celda mencionada.


Para determinar el último día de la fecha, lo que hacemos es consultar por el primer día del mes siguiente usando la función DateSerial, con ello determinamos cual es el día cero del mes siguiente, obteniendo como resultado el último día del mes actual.

Para determinar el primer día de la fecha consultamos en el mes actual cual es el primer día, y la función nos devuelve el primer día del mes de la fecha que seleccionamos, esto es menos común determinar, ya que sabemos que el primer día es siempre uno, no así el último que puede ser 28, 29,0,o 31, dependiendo el mes en el que estemos o si el año es bisiesto o no para el caso del mes de febrero que puede tener 28 o 29 días; no obstante es interesante saberlo para poder asignarlo a una variable o hacer una concatenación con dicho dato, en fin hay un sin número de posibilidades en la que necesitemos este dato.

El ejemplo de macro de VBA, también incorpora un procedimiento para determinar el año, mes y día de la fecha que seleccionemos o que se encuentre en una celda, para determinar el año usamos la función «Year«, para determinar el mes la función «Month» y para saber cual es el día de la fecha seleccionada usamos la función de VBA «Day«. Quizás también te interese investigar las funciones de Excel que son utilizadas en VBA a través de WorksheetFunction.


El vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo como copiar varias tablas vinculadas de Excel a Wordcomo ejecutar una macro dependiendo del valor de una celdapasar datos de listbox a hoja de Excelbuscar en listbox mientras escribes en textboxcrear indice a hojas del mismo libro y al menú principalconectar Excel con Access e insertar datos y muchos ejemplos más.


if (payload.eventType == ‘subscribe’) {
// Add code to handle subscribe event.
} else if (payload.eventType == ‘unsubscribe’) {
// Add code to handle unsubscribe event.
}
if (window.console) { // for debugging only
window.console.log(‘YT event: ‘, payload);
}
}

Al final hay un link del cual podrás descargar el ejemplo y adaptarlo a tus necesidades, el código se encuentra abierto y sin ningún tipo de restricción, te recomiendo descargar el ejemplo y ver su codificación y funcionamiento.

Código que se inserta en un userform

Sub ultimoDia()
Dim primerDia, ultimoDia As Date
Dim dia, año, mes
primerDia = DateSerial(Year(Cells(2, 2)), Month(Cells(2, 2)), 1)
ultimoDia = DateSerial(Year(Cells(2, 2)), Month(Cells(2, 2)) + 1, 0)
mes = Month(Cells(2, 2))
año = Year(Cells(2, 2))
dia = Day(Cells(2, 2))

Cells(2, 4) = «El primer día de la fecha es » & primerDia
Cells(3, 4) = «El último día de la fecha es » & ultimoDia
Cells(4, 4) = «El año de la fecha es » & año
Cells(5, 4) = «El mes de la fecha es » & mes
Cells(6, 4) = «El día de la fecha es » & dia
End Sub

Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


.

If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.

Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends