VBA Weekday

Função Excel VBA Weekday

Dia da semana em VBA é uma função de data e hora usada para identificar o dia da semana de uma determinada data, desde que seja uma entrada, esta função retorna um valor inteiro de 1 a 7 na faixa, há um argumento opcional fornecido para esta função que é o primeiro dia da semana, mas se não fornecermos o primeiro dia da semana, a função assumirá domingo como o primeiro dia da semana por padrão.

Podemos dizer o número do dia da semana olhando para uma data específica? Sim, podemos dizer o número do dia dessa semana dependendo do dia de início da semana. Em funções regulares de planilha, temos uma função chamada WEEKDAY no excel para dizer o número da semana para uma data específica. No VBA também temos a mesma função para encontrar a mesma coisa.

O que a função Weekday faz?

A função de dia da semana retorna o número do dia da data fornecida na semana. Por exemplo, se você tem datas de 01 de abril a 07 de abril e se deseja saber o dia da data 05 de abril se o dia de início da semana é segunda-feira, é o 5º dia.

Para encontrar isso, temos a mesma função “Dia da semana” em uma planilha e também no VBA. Abaixo está a sintaxe da função.

Data: para qual data estamos tentando encontrar o dia da semana. Esta deve ser uma data adequada com o formato correto.

[Primeiro dia da semana]: Para determinar o dia da semana da data fornecida, devemos mencionar qual é o primeiro dia da semana. Por padrão, o VBA considera “segunda-feira” como o dia de início da semana. Além disso, podemos fornecer os dias abaixo também.

Exemplos

Você pode baixar este modelo Excel de função VBA WeekDay aqui - Modelo Excel de função VBA WeekDay

Exemplo 1

Para iniciar o processo, deixe-me começar com um exemplo simples primeiro. Agora tentaremos encontrar o dia da semana para a data “10-abril-2019”.

Etapa 1: definir a variável como string

Código:

 Sub Weekday_Example1 () Dim k As String End Sub 

Etapa 2: Atribua valor à variável

Atribua o valor à variável “k” aplicando a função WEEKDAY.

Código:

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

Etapa 3: Insira a data na função

A data que estamos testando aqui é “10-abr-2019”, então passe a data para “10-abr-2019”.

Código:

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

Etapa 4: Mostrar o valor da variável em MsgBox

Por padrão, o primeiro dia da semana é considerado “segunda-feira”, portanto ignore esta parte. Feche o suporte. Na próxima linha, mostre o valor da variável “k” na caixa de mensagem do VBA.

Código:

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

Ok, terminamos.

Se executarmos o código obteremos o resultado “4” porque a partir de domingo a data fornecida (10-abr-2019) cai no 4º dia da semana.

Observação: o dia de início da semana do meu sistema é “domingo”.

Da mesma forma, se você alterar o dia de início da semana, ele continuará variando. Abaixo está uma linha de exemplo para o mesmo.

Código:

k = Weekday ("10-Abr-2019", vbMonday) 'Retorna 3 k = Weekday ("10-Abr-2019", vbT Tuesday)' Retorna 2 k = Weekday ("10-Abr-2019", vbWed Wednesday) 'Retorna 1 k = Weekday ("10-Abr-2019", vbThucted)' Retorna 7 k = Weekday ("10-Abr-2019", vbFriday) 'Retorna 6 k = Weekday ("10-Abr-2019 ", vbSaturday) 'Retorna 5 k = Weekday (" 10-Abr-2019 ", vbSunday)' Retorna 4 

Exemplo # 2 - Chegar quer a data seja no fim de semana ou não

Suponha que você tenha uma data como a abaixo e deseja encontrar a data do próximo fim de semana, então podemos usar a função WEEKDAY para chegar aos resultados.

Precisamos usar WEEKDAY com condição IF e loops para chegar ao resultado. Eu escrevi o código para você ir linha por linha para obter a 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 (Células (k, 1) .Valor, vbSegunda-feira) = 2 Então Células (k, 2) .Valor = Células (k, 1) + 4 ElseIf Dia da semana (Células (k, 1) .Valor, vbSegunda-feira) = 3 Então Células (k, 2) .Valor = Células (k, 1) + 3 ElseIf Dia da semana (Células (k, 1) .Valor, vbSegunda-feira) = 4 Então Células (k, 2) .Valor = Células (k, 1) + 2 ElseIf Weekday (Cells (k, 1) .Value, vb Monday) = 5 Then Cells (k, 2) .Value = Cells (k, 1) + 1 Else Cells (k, 2) .Value = "Este é realmente o fim de semana Data "End If Next k End Sub 

Isso chegará aos resultados abaixo.

Olhe para as células B6 e B7, obtemos o resultado como “Esta é na verdade a data do fim de semana” porque as datas “04-May-2019” e “06-Abr-2019” são na verdade datas de fim de semana, então não há necessidade de mostrar a data do fim de semana para datas de fim de semana. Por padrão, obtemos o resultado assim.