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 WeekDayExemplo 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.