Calendário na célula Excel – VBA

Planilha de consulta de CNPJ automática
2 de outubro de 2016
#ExcelWeekend é neste final de semana!
12 de outubro de 2016

Calendário na célula Excel – VBA

Neste artigo é demonstrado um calendário na célula Excel que pode ser chamado ao clicar em uma determinada célula do Excel ou ainda através de atalhos ou em outras forms. A vantagem deste formulário sobre os outros é que ele funciona em qualquer versão do Excel (provavelmente), dado que não utiliza componentes que foram descontinuados como o Microsoft Month View e nem utiliza componentes externos.

Além disso o código fonte do calendário é aberto para que sejam realizadas alterações ou para estudar o seu código fonte.

Calendário na célula Excel

Como incluir o calendário na sua pasta de trabalho

Para incluir o calendário na sua pasta de trabalho, de modo que fique utilizável somente nela e possa distribuir a sua planilha sempre com este componente, siga os passos:

  1. Habilite a guia desenvolvedor clicando com o botão direito sobre a faixa de opções do Excel e selecionando a guia Desenvolvedor.Calendário na célula Excel
  2. Na guia Desenvolvedor clique no botão Visual Basic.
  3. Clique com o botão direito sobre a árvore VBA Project referente á sua pasta de trabalho e clique com o botão direito selecionando a opção importar arquivo e selecione o arquivo frmCalendario que está disponível para download ao final do artigo.Calendário na célula Excel
  4. Ainda no VBA clique no menu em Inserir->Módulo e no módulo inserido digite o seguinte procedimento. Ele servirá para chamar o calendário.Calendário na célula Excel
  5. Volte para o Excel fechando o VBE, basta clicar no X no canto superior direito, ele não fechará o Excel.
  6. Na sua pasta de trabalho clique na guia Desenvolvedor e no botão Macros.
  7. Na lista de Macros selecione a macro lsCalendario, clique no botão Opções e em tecla de atalho digite C maiúsculo, fazendo com que o atalho seja CTRL+SHIFT+C.Calendário na célula Excel
  8. Pronto! Agora o calendário já pode ser chamado nesta pasta de trabalho que você incluiu o calendário. Basta selecionar uma célula e clicar em CTRL+SHIFT+C para que o formulário seja chamado, depois navegar para a data desejada e clicar sobre o botão referente ao dia.

Como chamar o calendário ao dar duplo clique em uma célula

Agora vamos ver como incluir o calendário na célula que será acionado ao clicar duas vezes em uma célula de uma determinada coluna.

  1. Na guia Desenvolvedor clique no botão Visual Basic e clique duas vezes na árvore á esquerda na planilha em que deseja incluir o código.
  2. Selecione Worksheet na primeira combo e na segunda selecione BeforeDoubleClick, o VBE já criará automaticamente a chamada do evento que será chamado antes de realizar um duplo clique na célula.Calendário na célula Excel
  3. Lembrando que para que funcione você deve ter incluído o Módulo e a função lsCalendario, ou ainda se não quiser utilizar a função lsCalendario, pode chamar diretamente frmCalendario.show substituindo este código.
  4. Veja que no caso colocamos Target.Column = 5, este código identifica a coluna aonde foi dado o duplo clique e só chama a lsCalendario se for a coluna 5, ou seja, a coluna E. Se quiser outra coluna basta alterar este número.
  5. Feche o VBE e volte ao Excel, veja que ao dar um duplo clique em uma célula da coluna E o Excel abre o calendário automaticamente.Calendário na célula Excel

Como usar o calendário em qualquer planilha no seu computador

Para que o calendário fique disponível no seu Excel, siga os passos seguintes. Lembrando que não irá para o seu cliente, mas funcionará em qualquer planilha que você tenha no seu computador.

  1.  Na guia Desenvolvedor clique no botão Gravar Macro.
  2. Digite no nome da macro lsCalendario, no atalho digite pressione SHIFT+C, ficará CTRL+SHIFT+C, e principalmente em Armazenar macro em: selecione Pasta de trabalho pessoal de macros.Calendário na célula Excel
  3. Clique em Ok e depois na guia Desenvolvedor clique em Parar Gravação.
  4. Abra o VBE clicando na guia Desenvolvedor em Visual Basic ou pressionando ALT+F11 e procure na árvore do VBE por PERSONAL.XLSB, depois clique na pasta Módulos e clique duas vezes em Módulo 1.
  5. Digite o seguinte código:Calendário na célula Excel
  6. Clique com o botão direito sobre a árvore VBA Project referente á sua pasta de trabalho e clique com o botão direito selecionando a opção importar arquivo e selecione o arquivo frmCalendario que está disponível para download ao final do artigo.
  7. Clique em Salvar e Feche o Excel, e salve ao ele pedir para salvar a pasta PERSONAL.
  8. Ao abrir o Excel você já terá o calendário funcionando corretamente para você ao pressionar CTRL+SHIFT+C em qualquer célula de qualquer planilha do seu Excel será chamado o calendário na célula do Excel.

No download eu disponibilizo a form e também um exemplo de uma planilha de controle de cheques muito legal que eu fiz em 2011: http://guiadoexcel.com.br/controle-de-cheques-com-vba/, ele controla a baixa de cheques e também cria uma lista rapidamente para imprimir e juntar aos cheques que serão levados ao banco.Calendário na célula Excel

 

Abraço

Marcos Rieper


Clique aqui e leia mais sobre Excel VBA. https://www.guiadoexcel.com.br/vba/ O Guia do Excel foi criado por Marcos Rieper e oferece artigos, dicas, tutoriais e modelos de planilhas prontas. Aqui você encontra tudo sobre Excel, seja de nível básico, intermediário,  avançado e VBA. O Guia do Excel oferece diversos materiais completamente gratuitos para download. Navegue em nosso site e confira! Conheça também a nossa Loja do Excel https://loja.guiadoexcel.com.br/
Cursos

Curso Excel Completo – Curso Excel Básico + Curso Excel Avançado – Acesso Vitalício

R$218,00 R$179,00

COMPRAR
Cursos

Curso Excel Master – Curso Excel Básico + Curso Excel Avançado + Curso VBA Excel + LP – Acesso Vitalício

R$357,00 R$249,00

COMPRAR
Cursos

Curso Excel PRO – Curso Excel Avançado + Curso VBA Excel + Lógica de programação – Acesso Vitalício

R$258,00 R$199,00

COMPRAR
Cursos

Curso Excel Web – Curso VBA Excel + Lógica de programação + Curso Web Scraping VBA- Acesso Vitalício

R$388,90 R$309,00

COMPRAR

35 Comentários

  1. Jean Machado disse:

    Muito bom
    Conteúdo excelente, bem explicado mas não enrolado e demorado.
    Além de ter os gifs no site caso alguém quer só lembrar algum passo que esqueceu da video-aula.
    Parabéns pelo trabalho e continue 🙂

  2. Jaime Miquelleto disse:

    Marcos,
    parabéns pela iniciativa e abnegação de compartilhar planilhas a nós, aprendizes de VBA. Eu particularmente estou estudando como autodidata e sou um completo iniciante, mas já compreendo algumas sintaxes da programação e as suas planilhas são ótimas e didáticas.
    Espero que você continue nos agraciando com mais modelos para que aprendamos mais.

    Nota 1.000 para você.

  3. Raphael Batista de Almeida disse:

    Muito obrigado pela dica, amigo.

    Tenho uma planilha de controle financeiro pessoal e estou tentando aprimorá-la, mas de preferência com conhecimentos próprios. Entretanto, existem algumas barreiras que estão me impedindo de deixá-la menos manual. Por exemplo:

    Já consigo fazer exibir resultados em algumas células dependendo do que eu preencha em alguma. Quero usar esse mesmo procedimento para exibição da relação mensal, sem precisar criar 12 gráficos diferentes. Gostaria de apenas um e, ao alternar entre os meses através de uma lista suspensa, o gráfico mudaria de acordo com o mês escolhido.

    Isso me pouparia espaço, tempo e daria um visual muito mais clean. Se puder me iluminar com algum conselho eu ficaria muito grato.

    Como não sei mexer em VBA ainda aderi a este calendário, que diga-se de passagem é incrível.

    Parabéns pelo ótimo trabalho.

  4. VANDERLEI PINHEIRO disse:

    MARCOS BOM DIA
    EXCELENTE SEU TRABALHO PARABENS, FIZ O DOWNLOAD DESTE MATERIAL REFERENTE AO CALENDARIO. OBRIGADO

  5. Ana Carolina disse:

    Se eu quiser colocar em mais de uma coluna o calendário.. qual comando devo descrever visual basic? No caso vc utilizou como exemplo a coluna 5. A duvida é caso queira utilizar na coluna 5 e 6, por exemplo.

  6. Kharina disse:

    Adoro seus trabalhos Marcos
    Muitas vezes recorro para ajuda. Mas gostaria de te fazer uma pergunta.
    Preciso montar uma macro onde numa lista de pessoa mostre uma msgbox com os aniversariantes do dia.
    Tem como???
    Não estou conseguindo de maneira alguma

  7. Andrew disse:

    Prezado, boa noite.

    Depois de eu ter feito todo o processo, como faço pra salvar o arquivo ? pq dá uma mensagem dizendo que não tem como salvar sem macros.

    Como o meu excel é o 2016, tive dificuldades em configurar para duplo clique, pois a interface é diferente.

    Eu copiei os mesmo comandos da sua planilha e joguei na minha e, com isso, quando dou duplo clique em outra celula as linhas são preenchidas de azul. Como faço para tirar isso ?

  8. Douglas Jesus disse:

    Primeiramente o parabenizo pelo excelente trabalho, realmente me ajudou muito, porém tenho uma duvida: Como faço para fechar o pop up do calendario com dois cliques na data que quero inserir na celula.
    Abraços

    • Marcos Rieper disse:

      Que bom que gostou Douglas, faça o seguinte.

      Abra o VBA, com ALT+F11

      Insira para cada um dos botões no método DblClick o código conforme abaixo.

      Private Sub CommandButton1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
      frmCalendario.Hide
      End Sub

    • Renato de Moura disse:

      Bom dia Douglas,

      Li seu questionamento ao Marcos Rieper de como fechar o calendário após clicar na data. Ele te passou um código. Pergunto: Funcionou ? Você conseguiu que funcionasse ?

      • Marcos Rieper disse:

        Olá Renato,

        Substitua o procedimento abaixo por este código:

        Private Sub lsClickBotao(ByVal lValor As String, ByVal lBotao As Long)
        If lBotao 20 Then
        ActiveCell.Value = CDate(ScrollBar1.Value & “-” & ScrollBar2.Value – 1 & “-” & lValor)
        Else
        If lBotao >= 28 And lValor < 15 Then
        ActiveCell.Value = DateAdd("m", 1, CDate(ScrollBar1.Value & "-" & ScrollBar2.Value & "-" & lValor))
        Else
        ActiveCell.Value = CDate(ScrollBar1.Value & "-" & ScrollBar2.Value & "-" & lValor)
        End If
        End If

        frmCalendario.Hide
        End Sub

        O frmCalendario.Hide irá fechar o formulário.

  9. Valdinei disse:

    Boa tarde Marcos.
    Acompanho seu trabalho a pouco tempo mas já estou aproveitando seus conhecimentos.
    Hoje terminei de implementar seu calendário em minha planilha de treinamento modular para definição das datas previstas e realizadas.
    Fiz algumas pequenas mudanças nela:
    – Criado botão “HOJE:” que, quando acionado, retorna o calendário para o mês e ano atual,
    – Retirei um botão escondido que servia para fechar o formulário,
    – Alterei a sequencia do controle de ano para que quando for acionado o comando para cima, seja aumentado um ano e quando for acionado para baixo, diminua um ano e
    – Coloquei um botão na tela para invocar o formulário do calendário. Acho mais fácil do que o atalho de teclado mas deixei ambos funcionando.
    Parabéns. Tutorial muito útil, didático e funcional.

  10. Maurício de A. Franzolin disse:

    Excelente!!! Fácil, rápido e bem explicado! Parabéns.

  11. Erivelton disse:

    Ola, tudo bem Marcos.

    Entrei no link, no entanto veio no arquivo zipado somente a planilha o arquivo frmCalendario.frm não veio.

  12. Bruno disse:

    Boa Tarde,

    Em primeiro lugar quero agradecer, me ajudou muito!

    Mas eu tenho uma dúvida,

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column = 8 Then
    IsCalendario
    End If
    End Sub

    Neste código eu consigo dar um duplo clique no coluna “H” e ter acesso ao calendário, como posso fazer isso em duas colunas ao mesmo tempo, por exemplo, “G e H”.?

  13. Fabio Soares disse:

    Muito bom video… Já procuro isto há algum tempo… Porém queria incoporar na Planilha do excel de forma fixa e depois ia lá verificar quando necessário sem o chamar…É possivel?
    Queria também diminuir ao tamanho…

    Obrigado,
    Fábio Soares

  14. Ira disse:

    Funcionou! Lindo! Obrigada!

  15. Gleison Alves disse:

    Muito Obrigado… Ajudou muito… Att

  16. Luis Cardoso disse:

    Primeiramente obrigado pela excelente e clara explicação. É uma opção muito boa para calendário.
    É possível alterar o código fonte para exibir a data no sistema americano de mm-dd-yy e traduzir os nomes dos meses e iniciais dos dias para o Inglês? Esse processo seria muito trabalhoso? Ou existe algum outro código fonte como esse, já em Inglês e no sistema americano de data?
    Grato

  17. Leonardo disse:

    Marcos, show de bola seu conteúdo, é de extrema utilidade.
    Três palavras o define: Simples, prático e Rápido.
    Site já incluso nos meus favoritos.
    Grato.

    Como contribuição deixo os códigos abaixo:

    – Chamar a macro quando clicado em uma única célula (No caso de um Cadastro)
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = “$D$10” Then
    frmCalendario.Show
    End If
    End Sub

    – Primeira letra do mês maiúscula:
    Substitua o trecho do código:
    De: lblMes = Format(ScrollBar1.Value & “-” & ScrollBar2.Value & “-01”, “mmmm”)
    Para: lblMes = StrConv(Format(ScrollBar1.Value & “-” & ScrollBar2.Value & “-01”, “mmmm”), vbProperCase)

  18. OSMAIR TOZETTI disse:

    Olá Marcos, muito bom esse controle; a tempos estava a procura dessa função.
    Fiz o procedimento conforme orientado, mas ao iniciar o calendário (CTRL+SHIFT+C) o mês que aparece no topo (logo abaixo do ano) é sempre outubro; os dias no quadro abaixo do mês estão corretos (março) e também a data que aparece no quadro “Hoje:” está correta.
    Ao clicar no botão para retroceder o mês ele volta para fevereiro e no botão para avançar mês vai para abril.
    Como faço para corrigir esse erro?
    Grato

  19. Ezequiel disse:

    Olá, muito bom!

    Porém, não sei o que aconteceu, mas agora começou a dar erro de depuração 13 e para no código “lsFontesBotoes Me”.

    Help me please

  20. Joel Martins Milhomem disse:

    Marcos, parabéns por sua iniciativa em compartilhar seu conhecimento. Fiquei maravilhado em conseguir incluir o calendário em duas colunas diferentes usando o VBA.
    Muito obrigado mesmo, Que Deus continue abençoando sua vida pois o que você está fazendo é nobre.

    Grande abraços,

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Inscreva-se no nosso canal do Youtube!


Junte-se ao nosso canal do Youtube. Começamos em abril de 2016, mas já temos mais de 06:00 h de treinamentos gratuitos e este número irá aumentar. Vídeos novos todos os sábados.