Dias da semana no Excel VBA - Macros fáceis do Excel

Índice

Abaixo, veremos um programa em Excel VBA que calcula o número de dias úteis entre duas datas.

Os dias da semana são: segunda, terça, quarta, quinta e sexta-feira.

Situação:

Observação: as datas estão no formato dos EUA. Meses primeiro, dias depois. Este tipo de formato depende das configurações regionais do Windows.

1. Primeiro, declaramos cinco variáveis. data1 do tipo Data, data2 do tipo Data, dateToCheck do tipo Data, diasEntre do tipo Inteiro, dias da semana do tipo Inteiro ei do tipo Inteiro.

Dim date1 As Date, date2 As Date, dateToCheck As Date
Dim daysEntre As Integer, weekdays As Integer, i As Integer

2. Inicializamos quatro variáveis. Usamos a função DateDiff para inicializar a variável daysBetween. Esta função possui três argumentos. Preenchemos "d" para o primeiro argumento, pois queremos o número de dias entre data1 e data2.

dias da semana = 0
data1 = intervalo ("B2")
data2 = intervalo ("B3")
daysBetween = DateDiff ("d", data1, data2)

3. Precisamos verificar para cada data entre data1 e data2 (incluindo data1 e data2) se a data é um dia da semana ou não. Se sim, incrementamos os dias da semana em 1. Usaremos um loop For Next.

Para i = 0 a dias entre

4. Usamos a função DateAdd para obter cada data que precisamos verificar. Esta função possui três argumentos. Preenchemos "d" para o primeiro argumento, pois queremos adicionar dias, i para o segundo argumento e data1 para o terceiro argumento, pois queremos adicionar i dias para data1. Dessa forma, o Excel VBA pode verificar cada data entre data1 e data2 começando com data1. Adicione a seguinte linha de código:

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

Exemplo: para i = 3, o Excel VBA verifica a data 1 + 3 dias.

5. Em seguida, usamos a função Weekday (função incorporada) para verificar se dateToCheck é um dia da semana ou não. A função Weekday retorna 1 para um domingo e 7 para um sábado. Portanto, só incrementamos a variável weekdays se Weekday (dateToCheck) não for igual a 1 e não for igual a 7 (significa diferente de). As linhas de código a seguir realizam o trabalho.

If (Weekday (dateToCheck) 1 And Weekday (dateToCheck) 7) Then
dias da semana = dias da semana + 1
Fim se

6. Não se esqueça de fechar o loop.

Proximo eu

7. Finalmente, exibimos o número de dias da semana usando um MsgBox. Usamos o operador & para concatenar (juntar) duas strings. Embora os dias da semana não sejam uma string, ela funciona aqui.

MsgBox dias da semana e "dias da semana entre essas duas datas"

8. Coloque sua macro em um botão de comando e teste-a.

Resultado:

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave