La función WorksheetFunction.Weekday en VBA es una función que nos retorna el número del día de la semana de una fecha.
Esta función nos puede ayudar identificar si estamos en un día especial de la semana, para a partir de ese número realizar algún otro cálculo, o cubrir alguna otra necesidad de identificar un día de la semana.
Sintaxis:
Application.WorksheetFunction.Weekday(expresión, primer día de la semana)
Retorno:
Retorna un double como resultado de la función, este valor puede estar entre el número 1 el número 7.
Expresión:
Es obligatorio y es la fecha a ser evaluada (es conveniente que este valor siga el formato regional que tengamos disponible a fin de que pueda funcionar correctamente)
Primer día de la semana:
Es opcional y en caso se emisión asume el 1 por defecto.
Este segundo parámetro puede ser uno de los siguientes 7 valores:
1 Retorna un número desde 1 (Domingo) a 7 (Sábado).
2 Retorna un número desde 1 (Lunes) a 7 (Domingo).
11 Retorna un número desde 1 (Lunes) a 7 (Domingo).
12 Retorna un número desde 1 (Martes) a 7 (Lunes).
13 Retorna un número desde 1 (Miércoles) a 7 (Martes).
14 Retorna un número desde 1 (Jueves) a 7 (Miércoles).
15 Retorna un número desde 1 (Viernes) a 7 (Jueves).
16 Retorna un número desde 1 (Sábado) a 7 (Viernes).
17 Retorna un número desde 1 (Domingo) a 7 (Sábado).
Ejemplos del uso de WorksheetFunction.Weekday
Si se cuenta con una variable "Fecha2" que es de tipo Date se puede usarla como parte la función:
Range("A20") = Application.WorksheetFunction.Weekday(Fecha2, 1)
Range("A21") = Application.WorksheetFunction.Weekday(Fecha2, 11)
También se puede colocar la fecha desde la misma función, claro esta empleando CDate para asegurar que la conversión al tipo de dato Date se realice correctamente:
Range("A5") = Application.WorksheetFunction.Weekday(CDate("05/08/2019"), 1)
Entrega el valor 2, correspondiente a este día Lunes, ya que la referencia toma como 1 al día Domingo (observemos que 05/08/2019 corresponde al 5 de agosto de acuerdo al formato regional)
Range("A5") = Application.WorksheetFunction.Weekday(CDate("05/08/2019"), 2)
Entrega el valor 1, correspondiente a este día Lunes, ya que la referencia toma como 1 al día Lunes.
Se anexa el archivo con los comandos del ejemplo: WorksheetFunction.Weekday VBA