Selecionador de Data Excel

Como inserir o selecionador de data no Excel?

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

Você pode baixar este modelo do selecionador de data aqui - modelo do selecionador de data

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 uma agenda suspensa, 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' em '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 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á está escrito. Substitua o código pelo código a seguir.

Código:

 Private Sub Worksheet_SelectionChange (ByVa l 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 'Com' para que não precisemos 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 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, é selecionada.
Else .Visible = False
  • Etapa 18: no final, fechamos o 'If'
 Fim se 
  • Etapa 19: Por fim, precisamos fechar 'Com'
 Terminar com 
  • Etapa 20: agora, o subprocedimento 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.

Agora, sempre que selecionarmos qualquer célula na coluna 'C', podemos ver um calendário suspenso no canto superior direito da célula selecionada. Podemos abrir o calendário suspenso clicando no símbolo de seta para baixo.

Precisamos clicar em qualquer data do calendário no mês selecionado para inserir essa data na célula selecionada.

Podemos mudar o mês para o anterior ou seguinte usando o botão de seta colocado no lado esquerdo e direito do calendário.

Também podemos clicar no mês para escolher um mês no menu suspenso.

Também podemos alterar o ano clicando no ano e usando as setas para cima e para baixo para escolher o ano desejado.

Coisas para lembrar

  • 'Microsoft Date and Time Picker Control 6.0 (SP6)' não está disponível para a versão de 64 bits do MS Excel.
  • Depois de escrever o código VBA, precisamos salvar o arquivo com a extensão '.xlsm' (Excel Macro-Enabled Workbook), caso contrário o código VBA não seria executado.