VBA Día de la semana

Función de día de la semana de Excel VBA

El día de la semana en VBA es una función de fecha y hora que se utiliza para identificar el día de la semana de una fecha dada siempre que sea una entrada, esta función devuelve un valor entero del rango de 1 a 7, hay un argumento opcional proporcionado a esta función que es el primer día de la semana, pero si no proporcionamos el primer día de la semana, la función asume el domingo como el primer día de la semana de forma predeterminada.

¿Podemos saber el número del día de la semana mirando una fecha en particular? Sí, podemos decir el número de día de esa semana dependiendo del día de inicio de la semana. En las funciones regulares de la hoja de trabajo, tenemos una función llamada WEEKDAY en Excel para indicar el número de la semana para una fecha en particular. En VBA también tenemos la misma función para encontrar lo mismo.

¿Qué hace la función de día de la semana?

La función de día de la semana devuelve el número de día de la fecha proporcionada en la semana. Por ejemplo, si tiene fechas del 01 de abril al 07 de abril y si desea saber el día de la fecha 05 de abril, si el día de inicio de la semana es a partir del lunes, es el quinto día.

Para encontrar esto, tenemos la misma función "Día de la semana" en una hoja de trabajo, así como en VBA. A continuación se muestra la sintaxis de la función.

Fecha: para qué fecha estamos tratando de encontrar el día de la semana. Esta debe ser una fecha adecuada con el formato correcto.

[Primer día de la semana]: para determinar el día de la semana de la Fecha proporcionada, debemos mencionar cuál es el primer día de la semana. De forma predeterminada, VBA considera el "lunes" como el día de inicio de la semana. Aparte de esto, también podemos suministrar los días siguientes.

Ejemplos

Puede descargar esta plantilla de Excel de función VBA WeekDay aquí - Plantilla de Excel de función VBA WeekDay

Ejemplo 1

Para comenzar el procedimiento, permítanme comenzar primero con un ejemplo simple. Ahora intentaremos encontrar el día de la semana para la fecha “10-abril-2019”.

Paso 1: Defina la variable como String

Código:

 Sub Weekday_Example1 () Dim k As String End Sub 

Paso 2: asignar valor a la variable

Asigne el valor a la variable “k” aplicando la función WEEKDAY.

Código:

 Sub Weekday_Example1 () Dim k As String k = Weekday (End Sub 

Paso 3: ingrese la fecha en función

La fecha que estamos probando aquí es "10-abr-2019", así que pase la fecha como "10-abr-2019".

Código:

 Sub Weekday_Example1 () Dim k As String k = Weekday ("10-Apr-2019" End Sub 

Paso 4: mostrar el valor de la variable en MsgBox

Por defecto, toma el primer día de la semana como "lunes", así que ignore esta parte. Cierre el soporte. En la siguiente línea, muestre el valor de la variable "k" en el cuadro de mensaje de VBA.

Código:

 Sub Weekday_Example1 () Dim k As String k = Weekday ("10-Apr-2019") MsgBox k End Sub 

Ok, hemos terminado.

Si ejecutamos el código obtendremos el resultado como “4” porque a partir del domingo la fecha indicada (10-Abr-2019) cae en el 4º día de la semana.

Nota: El día de inicio de la semana de mi sistema es "Domingo".

Del mismo modo, si cambia el día de inicio de la semana, seguirá variando. A continuación se muestra una línea de ejemplo para el mismo.

Código:

k = Día de la semana ("10-Abr-2019", vbMonday) 'Esto devuelve 3 k = Día de la semana ("10-Abr-2019", vbTuesday)' Esto devuelve 2 k = Día de la semana ("10-Abr-2019", vbMiércoles) 'Esto devuelve 1 k = Weekday ("10-Apr-2019", vbThursday)' Esto devuelve 7 k = Weekday ("10-Apr-2019", vbFriday) 'Esto devuelve 6 k = Weekday ("10-Apr-2019" ", vbSaturday) 'Esto devuelve 5 k = Weekday (" 10-Apr-2019 ", vbSunday)' Esto devuelve 4 

Ejemplo n. ° 2 - Llegue si la fecha es fin de semana o no

Suponga que tiene una fecha como la siguiente y desea encontrar la fecha del próximo fin de semana, entonces podemos usar la función WEEKDAY para llegar a los resultados.

Necesitamos usar WEEKDAY con la condición IF y los bucles para llegar al resultado. He escrito el código para que vayas línea por línea para obtener la lógica.

Código:

 Sub Weekend_Dates () Dim k As Integer For k = 2 To 9 If Weekday (Cells (k, 1) .Value, vbMonday) = 1 Then Cells (k, 2) .Value = Cells (k, 1) + 5 ElseIf Weekday (Cells (k, 1) .Value, vbMonday) = 2 Then Cells (k, 2) .Value = Cells (k, 1) + 4 ElseIf Weekday (Cells (k, 1) .Value, vbMonday) = 3 Luego Cells (k, 2) .Value = Cells (k, 1) + 3 ElseIf Weekday (Cells (k, 1) .Value, vbMonday) = 4 Then Cells (k, 2) .Value = Cells (k, 1) + 2 ElseIf Weekday (Cells (k, 1) .Value, vbMonday) = 5 Then Cells (k, 2) .Value = Cells (k, 1) + 1 Else Cells (k, 2) .Value = "Este es en realidad el fin de semana Fecha "Fin si siguiente k Fin Sub 

Esto llegará a los resultados a continuación.

Mira las celdas B6 y B7, obtuvimos el resultado como "Esta es en realidad la fecha del fin de semana" porque las fechas "04-May-2019" y "06-Apr-2019" son en realidad fechas de fin de semana, por lo que no es necesario mostrar la fecha del fin de semana. para fechas de fin de semana. De forma predeterminada, obtenemos el resultado como este.