Prezado leitor(a)! Neste tutorial de hoje Aprenda 2 Formas de como Calcular Dias úteis no Access, vamos entender 2 técnicas para fazer este cálculo dentro do Access VBA.
Sem dúvida nenhuma, este procedimento é muito comum para quem trabalha com cronograma, prazos e planejamento de ações e atividades.
A ideia é entender o algoritmo capaz de resolver esta solução, portanto não vamos levar em consideração os feriados que porventura surgirem neste intervalo. Vamos considerar como dias não úteis apenas os Sábados e Domingos.
A seguir veremos 2 formas para Calcular Dias úteis no Access.
Como Calcular Dias úteis no Access: A partir de uma Quantidade de Dias
Suponhamos que você tenha dado entrada em uma documentação em algum órgão público de sua cidade, e o agente responsável pela sua documentação confirme que esta documentação estará disponível para retirada 20 dias úteis após a sua entrada. Como poderemos criar um algoritmo para resolver esta questão?
Sub DiasUteis_1()
Dim DataInicial As Date, DataFinal As Date
Dim qDiasUteis As Integer, dias As Integer
Dim diaSemana As Integer
DataInicial = InputBox("Entre com a Data de Solicitação do documento!", "Data Inicial")
qDiasUteis = InputBox("Informe a quantidade de dias úteis para disponibilidade!", "Dias Úteis")
dias = 0
DataFinal = DataInicial
While dias < qDiasUteis
DataFinal = DataFinal + 1
diaSemana = Weekday(DataFinal)
If diaSemana <> 1 And diaSemana <> 7 Then
dias = dias + 1
End If
Wend
Debug.Print "O seu documento estará disponível a partir de: " & DataFinal
End Sub
Neste código são solicitados 2 informações do usuário. A “DataInicial”, ou seja, a data em que foi dado a entrada na documentação e a quantidade de dias úteis que vai levar para a documentação ficar pronta.
Com base nestas informações eu declaro a variável “dias” que será o contador de dias úteis dentro do meu algoritmo.
Neste contexto, eu igualo a “DataFinal” a datainicial para que dentro do ciclo eu saiba que aquele dia que está sendo referenciado é um dia da semana. Aqui usamos o auxílio da função WeekDay() ou DiaSem() que vai trazer o dia da semana de uma data.
Caso este dia da semana seja diferente de um sábado e de um domingo, aquele dia específico serás um dia útil, incrementando o contador “dias”.
O algoritmo faz este ciclo enquanto a quantidade de dias, do contador “dias” for menor que a quantidade de dias úteis informado pelo usuário.
Ao final do processo, o algoritmo exibe na Janela de Inspeção Imediata a “DataFinal”, ou seja, a partir de quando a documentação estará pronta para ser entregue.
Calcular Dias úteis no Access: Cálculo entre 2 Datas, descontando os feriados
Suponhamos agora que você tenha uma obra para ser executada dentro de um determinado intervalo de datas e que sua equipe de trabalho só pode trabalhar nos dias úteis desse intervalo. Quantos dias sua equipe terá disponibilidade para trabalhar?
Sub DiasUteis_2()
Dim DataInicial As Date, DataFinal As Date
Dim di As Date, dias As Integer
Dim diaSemana As Integer, intFeriados As Integer
DataInicial = InputBox("Entre com a Data Inicial!", "Data Inicial")
DataFinal = InputBox("Entre com a Data Final!", "Data Final")
dias = 0
di = DataInicial
While di <= DataFinal
di = di + 1
diaSemana = Weekday(di)
If diaSemana <> 1 And diaSemana <> 7 Then
dias = dias + 1
End If
Wend
intFeriados = DCount("[Datas]", "tblFeriados", "[Datas] Between #" & DataInicial & _
"# And #" & DataFinal & "#")
Debug.Print "Há " & CInt(dias - intFeriados) & " dias entre " & _
DataInicial & "-" & DataFinal
End Sub
Neste novo código são solicitados 2 informações do usuário. A “DataInicial” e a “DataFinal” do intervalo.
É de suma importância ter uma tabela com as datas dos feriados do período para que o cálculo seja realizado ccom êxito
Com base nestas informações eu declaro a variável “dias” que será o contador de dias úteis dentro do meu algoritmo.
Neste contexto, eu crio uma outra variável “di” que vai receber a minha “DataInicial” para que dentro do ciclo eu saiba que aquele dia que está sendo referenciado é um dia da semana. Aqui usamos mais uma vez o auxílio da função WeekDay() ou DiaSem() que vai trazer o dia da semana de uma data.
Caso este dia da semana seja diferente de um sábado e de um domingo, aquele dia específico serás um dia útil, incrementando o contador “dias”.
O algoritmo faz este ciclo enquanto a variável “di” for menor que a “DataFinal” informada pelo usuário.
Ao final do processo, o algoritmo exibe na Janela de Inspeção Imediata a quantidade de dias úteis que existem entre estas a “DataInicial” e a “DataFinal”, descontado da quantidade de feriados que existirem neste período.
Gostou dessas técnicas?
Deixe seu comentário sobre estas funções.
Permalink
Grande Aldir Oliveira, saudações.
Gostei muito da sua aula e estava em busca de algo simples para implementar no meu BD.
O problema é que bato cabeça de como ter o resultado imediato da sua programação espetacular na janela de verificação do VBA, mas inserida em controle de um formulário. É possível?
Por exemplo, coloco a data inicial, a quantidade de dias e no campo data final, exibe a data encontrada.
Parabéns, agradeço
Permalink
Opa Paulo! Este cálculo é possível até sem programação. Você pode criar uma fórmula no próprio TextBox, Suponhamos que a Data Inicial esteja em um TextBox chamado txtDataInicial e vc deseje saber esta data final com 30 futuros. Vá até a Propriedade Fonte de Controle do txtDataFinal e coloque a seguinte fórmula: =[txtDatainicial]+30. Toda vez que for digitado uma Data Inicial a Data Final aparecerá com mais 30 dias
Obs: Não esqueça de formatar ambos os TextBox como Data Abreviada.