Insira os dias da semana de segunda a sexta em uma planilha usando VBA no Microsoft Excel

Anonim

Neste artigo, criaremos uma macro para extrair os dias da semana entre duas datas.

Neste exemplo, temos que especificar a data de início e a data de término antes de executar a macro. A macro escolhe o valor da data de início da célula J8 e o valor da data de término da célula J9. Depois de especificar as datas de início e término, a macro pode ser executada pressionando o botão “Enviar” ou as teclas de atalho Alt + F8.

Ao executar a macro, ele retornará os dias da semana entre duas datas em uma nova planilha. A planilha recém-inserida contém os dias da semana na coluna A, seguidos da respectiva data na coluna B. A data de saída na coluna B estará no formato dd.mm.aa.

Cada semana será seguida por uma linha em branco para diferenciar entre duas semanas consecutivas.

Explicação lógica

Na macro, usamos a função Weekday para diferenciar entre dias da semana e finais de semana. A função de formato é usada para exibir a data no formato necessário.

Função de dia da semana

A função Weekday retorna um valor inteiro que representa o dia da semana.

Sintaxe

Dia da semana (Date_Value, [First_Day_Of_Week])

Date_Value especifica o valor da data para a qual você deseja encontrar o dia da semana.

Primeiro dia da semana especifica qual dia da semana deve ser considerado o primeiro dia da semana. Leva um valor inteiro ou o valor escolhido na enumeração FirstDayOfWeek como entrada. Se nenhum valor for especificado, FirstDayOfWeek.Sunday será usado como valor padrão.

Valor de enumeração

Valor inteiro

Observações

FirstDayOfWeek.System

0

Primeiro dia da semana especificado nas configurações do sistema

FirstDayOfWeek.Sunday

1

Domingo (padrão)

FirstDayOfWeek.Monday

2

Segunda-feira

FirstDayOfWeek.T Terça-feira

3

terça

FirstDayOfWeek.Wed Wednesday

4

quarta-feira

FirstDayOfWeek.Thucted

5

quinta-feira

FirstDayOfWeek.Friday

6

sexta-feira

FirstDayOfWeek.Saturday

7

sábado

Como visto no código da macro, usamos Weekday (i, 2) para especificar segunda-feira como o primeiro dia da semana.

Função de formatação

A função Format pega uma expressão de data como entrada e a retorna como uma string formatada.

Sintaxe da função Format

Formato (Date_Value, format)

Date_Value especifica o valor do tipo de dados de data.

Formato usa o valor da string para especificar que tipo de formato de data é necessário.

A tabela a seguir define alguns caracteres populares que podem ser usados ​​para criar os formatos de data / hora exigidos:

Personagem

Descrição

d

exibe o dia como um número sem um zero à esquerda (1 - 31)

dd

exibe o dia como um número com um zero à esquerda (01 - 31)

ddd

exibe o dia como uma abreviatura (dom - sáb)

dddd

exibe o dia como um nome completo (domingo - sábado)

C

exibe o dia da semana como um número (1 para domingo a 7 para sábado)

ww

exibe a semana do ano como um número (1 - 54)

m

exibe o mês como um número sem um zero à esquerda (1 - 12)

milímetros

exibe o mês como um número com um zero à esquerda (01 - 12)

mmm

exibe o mês como uma abreviatura (janeiro - dezembro)

mmmm

exibe o mês como um nome de mês completo (janeiro - dezembro)

q

exibe o trimestre do ano como um número (1 - 4)

y

exibe o dia do ano como um número (1 - 366)

yy

exibe o ano como um número de 2 dígitos (00 - 99)

aaaa

exibe o ano como um número de 4 dígitos (100 - 9999)

h

exibe a hora como um número sem zeros à esquerda (0 - 23)

hh

exibe a hora como um número com zeros à esquerda (00 - 23)

n

exibe o minuto como um número sem zeros à esquerda (0 - 59)

nn

exibe o minuto como um número com zeros à esquerda (00 - 59)

s

exibe o segundo como um número sem zeros à esquerda (0 - 59)

WL

exibe o segundo como um número com zeros à esquerda (00 - 59)

Para deixar uma linha em branco no final de cada semana, verificamos os domingos usando a função de dia da semana e incrementamos o valor da variável “StartingRow” em 1 para que a próxima linha permaneça vazia.

Como visto no código da macro, usamos a função Format duas vezes de maneiras diferentes. Em primeiro lugar, usamos Format (i, "ddd") para obter o dia da semana e, em segundo lugar, usamos Format (i, "dd.mm.yy") para obter a data no formato dd.mm.aaaa.

Explicação do código

Dim NewWorksheet As Worksheet

Definir NewWorksheet = Worksheets.Add

O código acima é usado para declarar o nome do objeto Worksheet como “NewWorksheet”. O método Worksheets.Add é usado para adicionar a nova planilha na coleção Worksheets. A instrução Set é usada para inicializar o objeto declarado com a folha recém-inserida.

For i = StartDate to EndDate

O loop FOR é usado para fazer um loop da data de início à data de término.

Se Dia da semana (i, 2) <6, então

A instrução IF é usada para verificar a condição e executar o código com base na condição. A condição acima verificará o retorno do valor pela função Dia da semana. Se for menor que 6, a condição IF retorna verdadeira e o código dentro da instrução IF será executado. Caso contrário, ele será ignorado.

StartingRow = 1

StartingRow = StartingRow + 1

A variável StartingRow é usada para percorrer as linhas da planilha. No início, a variável é inicializada na primeira linha. Com cada execução bem-sucedida da instrução IF, o valor da variável é incrementado em 1, movendo-se para a próxima linha na planilha.

Células (Linha inicial, 1)

A propriedade Células é usada para fazer referência a uma célula específica na planilha. As células (número_da_linha, número_da_coluna) podem ser usadas para fazer referência a qualquer célula na planilha, inserindo um número de linha e um número de coluna específicos como parâmetros. No código Cells (StartingRow, 1), 1 especifica a primeira coluna e a variável “StartingRow” define o número da linha.

Pode-se entender os códigos facilmente, pois incluí comentários junto com os códigos na macro.

Siga abaixo para o código

 Option Explicit Sub ExtractWeekdays () 'Declarando duas variáveis ​​do tipo de dados Date Dim StartDate As Date, EndDate As Date' Declarando a variável da planilha Dim NewWorksheet As Worksheet Dim StartingRow, i As Long 'Obtendo valores de data de início e data de término da planilha StartDate = Sheets ( "Macro"). Range ("J8"). Value EndDate = Sheets ("Macro"). Range ("J9"). Value 'Inicializando o número da linha inicial para a saída StartingRow = 1' Inserindo nova planilha Definir NewWorksheet = Worksheets. Adicionar For i = StartDate To EndDate 'Usando o método Weekday para verificar se é Weekday ou weekand If Weekday (i, 2) <6 Then' Inserir valor na planilha recém-inserida 'O método de formatação é usado para formatar o valor de data NewWorksheet.Cells ( StartingRow, 2) = Format (i, "dd.mm.yy") NewWorksheet.Cells (StartingRow, 1) = Format (i, "ddd") 'Atualizando o valor da variável StartingRow para mover para a próxima linha StartingRow = StartingRow + 1 End If 'Inserindo linha em branco para o fim de semana If Weekday (i, 2) = 7 Then StartingRow = StartingRow + 1 End If N ext i Definir NewWorksheet = Nothing End Sub 

Se você gostou deste blog, compartilhe com seus amigos no Facebook. Além disso, você pode nos seguir no Twitter e no Facebook.

Gostaríamos muito de ouvir de você, diga-nos como podemos melhorar nosso trabalho e torná-lo melhor para você. Escreva para nós no site de e-mail