Selecionador de data do Excel - Como inserir o selecionador de data (calendário) no Excel?

Como inserir o selecionador de data no Excel?

Para inserir o calendário suspenso, usaremos um controle ActiveX, que é o 'Microsoft Date and Time Picker Control 6.0 (SP6)' .

Suponha que tenhamos que manter os dados dos funcionários de uma empresa. Existem vários campos como

  • Código Emp
  • Nome Emp
  • Data de adesão Emp
  • Departamento Emp

Para inserir dados no MS Excel, criamos o seguinte formato.

Para inserir a data de adesão Emp, precisamos criar um calendário suspenso para que seja mais fácil para o usuário inserir as datas de adesão.

Para criar um calendário suspenso, as etapas são fornecidas abaixo -

Precisamos inserir um 'controle ActiveX' denominado 'Microsoft Date and Time Picker Control 6.0 (SP6)' . Para inserir, usaremos o comando 'Inserir' no grupo 'Controles' no 'Desenvolvedor'.

Se a guia 'Desenvolvedor' não estiver visível, a seguir estão as etapas a seguir para torná-la visível.

  • Etapa 1: No menu 'Arquivo' , escolha 'Opções'
  • Etapa 2: Uma caixa de diálogo chamada 'Opções do Excel' será aberta. Escolha 'Personalizar Faixa de Opções' na borda esquerda da caixa de diálogo. Marque a caixa de seleção da guia 'Desenvolvedor' e clique em 'OK'.
  • Etapa 3: agora, podemos ver a guia 'Desenvolvedor' no final da faixa de opções.
  • Etapa 4: Escolha 'Mais controles' em controles ActiveX.
  • Etapa 5: Escolha 'Microsoft Date and Time Picker Control 6.0 (SP6)' na lista e clique em 'OK'.
  • Etapa 6: clique em qualquer lugar da planilha para criar o calendário suspenso.
  • Etapa 7: Clique com o botão direito em 'Selecionador de data' e escolha 'Propriedades' na lista.
  • Passo 8: Altere o valor de 'False' para 'True' na propriedade 'CheckBox' para que valores nulos também sejam aceitos. Feche a caixa de diálogo 'Propriedades' .
  • Etapa 9: Clique com o botão direito do mouse no Selecionador de data novamente e escolha 'Exibir código' no menu contextual.
  • Etapa 10: No 'Editor do Visual Basic' , podemos ver que algum código já foi escrito. Substitua o código pelo código a seguir.

Código:

Private Sub Worksheet_SelectionChange (ByVal Target As Range) With Sheet1.DTPicker1 .Height = 20 .Width = 20 If Not Intersect (Target, Range ("C: C")) Is Nothing Then .Visible = True .Top = Target.Top. Left = Target.Offset (0, 1) .Left .LinkedCell = Target.Address Else .Visible = False End If End With End Sub
  • Etapa 11: A primeira instrução no código diz ao compilador do MS Excel para executar o código sempre que uma nova célula for selecionada (a seleção é alterada). A célula selecionada é enviada para o procedimento Sub como 'Destino'.
Private Sub Worksheet_SelectionChange (ByVal Target As Range)
  • Etapa 12: essas instruções definem a altura e a largura do selecionador de data em 20 pontos no excel. Pode-se observar que usamos o operador 'With' para não precisarmos nos referir ao DTPicker1 repetidamente.
 Com Sheet1.DTPicker1 .Height = 20 .Width = 20
  • Etapa 13: a seguinte cláusula 'If' define os critérios de que, se qualquer célula for selecionada na coluna 'C' , somente o selecionador de data terá visibilidade. Usamos a função 'Intersect' porque esta função verifica se selecionamos alguma célula na coluna C, então esta função retornará o endereço; caso contrário, o valor seria nulo.
If Not Intersect (Target, Range ("C: C")) Is Nothing Then .Visible = True
  • Etapa 14: a propriedade 'Superior' do Selecionador de data é definida como igual ao valor da propriedade 'Superior' da célula selecionada. Isso significa que vai junto com a borda superior da célula selecionada.
.Top = Target.Top
  • Etapa 15: Esta instrução define a propriedade esquerda do Selecionador de Data como igual à da próxima célula direita da célula selecionada (Distância da borda esquerda da coluna D da extremidade esquerda da planilha). Para obter a referência da próxima célula à direita, usamos a função 'Offset' com 0 como argumento de linha e 1 como argumento de coluna, pois isso obterá uma referência para a célula na próxima coluna.
.Left = Target.Offset (0, 1) .Left
  • Etapa 16: esta instrução vincula o Selecionador de data à célula de destino para que qualquer valor seja selecionado no calendário suspenso que é exibido na célula.
.LinkedCell = Target.Address
  • Etapa 17: A instrução 'Else' diz ao compilador para não exibir o Selecionador de Data quando qualquer célula, exceto aquela na coluna C, for selecionada.
Else .Visible = False
  • Etapa 18: no final, fechamos o 'If'.
Fim se
  • Etapa 19: Finalmente, precisamos fechar 'Com'
Terminar com
  • Etapa 20: agora, o sub procedimento terminará.
End Sub

Certifique-se de salvar o arquivo com a extensão '.xlsm', pois ele salva o código VBA que escrevemos e poderemos executar esse código quando qualquer célula for selecionada na coluna C.

Now, whenever we select any cell in the ‘C’ column, we can see a drop-down calendar at the top right corner of the selected cell. We can open the drop-down calendar by clicking on the down arrow symbol.

We need to click on any date in the calendar in the selected month to enter that date in the selected cell.

We can change month to previous or next using the arrow button placed at the left and right side of the calendar.

We can also click on the month to choose a month from the drop-down.

We can also change year by clicking on year and then using up and down arrows to choose the required one.

Things to Remember

  • ‘Microsoft Date and Time Picker Control 6.0 (SP6)’ is not available for the 64-bit version of MS Excel.
  • Depois de escrever o código VBA, precisamos salvar o arquivo com a extensão '.xlsm' (Pasta de trabalho habilitada para macro do Excel); caso contrário, o código VBA não seria executado.

Artigos interessantes...