A continuación vamos a ver un programa en Excel VBA que calcula el número de días laborables entre dos fechas.

Días de la semana son: lunes, martes, miércoles, jueves y viernes.

Situación:

Weekdays in Excel VBA

Nota: Las fechas están en formato de Estados Unidos. Meses primeros, Días Segundo. Este tipo de formato depende de las ventanas de la configuración regional.

  1. En primer lugar, declaramos cinco variables. fecha1 del tipo de fecha, la fecha 2 de tipo Date, dateToCheck de tipo Date, daysBetween de tipo entero, lunes a viernes de tipo entero y de tipo entero.

Dim date1 As Date, date2 As

Date, dateToCheck As Date

Dim daysBetween As Integer, weekdays As Integer, i As Integer
  1. inicializar cuatro variables. Utilizamos la función DateDiff para inicializar la variable daysBetween. Esta función tiene tres argumentos.

Relleno una «d» para el primer argumento ya que queremos que el número de días entre fecha1 y la fecha 2.

weekdays = 0

date1 = Range("B2")

date2 = Range("B3")

daysBetween = DateDiff("d", date1, date2)
  1. Tenemos que comprobar para cada fecha entre fecha1 y fecha2 (incluyendo fecha1 y la fecha 2) si la fecha es un día de la semana o no. Si es así, que se incrementan los días de semana en 1. Vamos a utilizar un bucle For Next.

For i = 0 To daysBetween
  1. Utilizamos la función DateAdd para obtener cada fecha tenemos que comprobar. Esta función tiene tres argumentos. Relleno una «d» para el primer argumento, ya que queremos añadir días, i en el segundo argumento, y fecha1 para el tercer argumento, ya que queremos añadir a fecha1 i días. De esta manera Excel VBA puede comprobar cada fecha entre fecha1 y fecha2 comenzando con fecha1. Agregue la siguiente línea de código:

dateToCheck = DateAdd("d", i, date1)

Ejemplo: para i = 3, cheques Excel VBA FECHA1 + 3 días.

  1. A continuación, se utiliza la función de día de la semana (acumulación de función) para comprobar si dateToCheck es un día de la semana o no. La función devuelve 1 día de la semana para un domingo y 7 para un sábado. Por lo tanto, sólo incrementamos los días laborables variables si Día de la semana (dateToCheck) no es igual a 1 y no es igual a 7 (<> medio que no igual a). Las siguientes líneas de código de hacer el trabajo.

If (Weekday(dateToCheck) <> 1 And Weekday(dateToCheck) <> 7) Then

weekdays = weekdays + 1

End If
  1. No se olvide de cerrar el bucle.

Next i
  1. Por último, se muestra el número de días de la semana usando un MsgBox. Utilizamos el operador & para concatenar (unir) dos cadenas. Aunque los días de semana no es una cadena que trabaja aquí.

MsgBox weekdays & " weekdays between these two dates"
  1. Coloque la macro en un botón de comando y probarlo.

Resultado:

Weekdays Result