Calendário no Excel com VBA

Objetivo: Criar um calendário que pode ser consultado a qualquer hora no Excel, tal como o calendário do Windows. Sendo que a data selecionada irá para a célula que estiver ativa.

Uma das coisas que eu sentia falta e acho que o amigo que está lendo também, é um calendário que possa ser chamado por um atalho no Excel.

Esta funcionalidade era sempre suprida por mim clicando no calendário do Windows, mas convenhamos que é bastante chato consultar ali.

Neste artigo vamos criar um calendário que pode ser chamado no Excel e colocará a data selecionada pelo duplo click do mouse diretamente na célula selecionada.

Criando o formulário:

  • Clique na guia Desenvolvedor e no botão Visual Basic.
  • Clique em VBAProject(Personal) que é o projeto acessível em qualquer lugar do Excel.

  • Clique em Inserir->User Form, irá ser incluído um formulário no projeto
  • Clique no botão Caixa de Ferramentas

  • Clique com o botão direito sobre o formulário da caixa de ferramentas habilitado pelo botão e clique em Controles Adicionais.
  • Selecione o controle adicional na lista chamado Microsoft MonthView Control 6.0 (SP4)

  • Selecione o componente MonthView que agora está habilitado na sua caixa de ferramentas e arraste para a Form1.

  • Ajuste o formulário arrastando as bordas para ficarem rentes ao calendário.
  • Com o formulário selecionado clique no botão Exibir código e insira o código abaixo:

Private Sub MonthView1_DateDblClick(ByVal DateDblClicked As Date)
   ActiveCell.Value = MonthView1.Value
   frmCalendario.Hide
End Sub
  • O código incluído fará com que o formulário passe a data para a célula quando houver um duplo clique sobre um valor no calendário

Realizando a chamada do formulário;

  • Ainda no VBA, clique em Inserir->Módulo estando selecionado o projeto PERSONAL.XLSB
  • No módulo incluído clique duas vezes e insira o código abaixo:
Sub lsCalendario()
   frmCalendario.Show
End Sub
  • Este código fonte realiza a chamada do calendário
  • Salve e feche o VBA

Realizando a chamada do calendário:

  • Clique na guia Desenvolvedor e no botão Macros
  • Selecione PERSONAL.XLSB!lsCalendario e clique no botão Opções
  • Digite uma tecla de atalho para a chamada deste procedimento, como por exemplo K (SHIFT+K) e feche esta tela
  • Agora pra testar funcionalidade pressione a tecla de atalho definida e clique duas vezes sobre qualquer data, o formulário irá passar esta data para a célula que estiver ativa e fechar automaticamente.

Então é isso, espero que tenham gostado do tutorial e se tiverem algum problema podem entrar em contato com o site ou ver o artigo sobre a habilitação da guia desenvolvedor ou gravar macro no Excel que tratam de assuntos relacionados a este.

Marcos Rieper

SISTEMA DE GESTÃO CONTA AZUL

O Excel é uma plataforma de trabalho muito aberta para servir ao gerenciamento de dados de uma empresa, dado a complexidade e a integração entre as diversas áreas que a compõe. Mas é a melhor para analisar suas informações.

Com a intenção de atender as micro e pequenas empresas a Conta Azul criou um software de gestão aonde você tudo o que você precisa para gerir a sua empresa: Estoque, Vendas, Financeiro e ainda emite Nota Fiscal Eletrônica, tudo isso em um sistema simples de trabalhar, que você acessa pela internet, não há a necessidade de comprar servidores e preocupar-se com backup e atendimento através de 0800.

O preço da ferramenta também chama a atenção, sendo um preço mais do que justo para se ter o controle dos dados e a geração de informações para a análise do seu negócio.

ContaAzul é um software de gestão financeira e fiscal para micro e pequenas empresas. Ele funciona 100% em plataforma web, não necessitando nenhuma instalação ou atualização. Você pode acessar de qualquer lugar e não tem necessidade de comprar nova licença caso troque de computador.

  O Guia do Excel recomenda o Conta Azul no gerenciamento de sua empresa.
Use QR-Code to get this permaking using your Smartphone. QR Code for Calendário no Excel com VBA

38 Comentários

  1. Silvano dos Santos disse:

    bom dia ,
    Marcos , parabenz meu amigo pelo site(blog) que Deus te abençoe e possa multiplicar seu conhecimento assim como vc tem multiplicado o nosso . entrei hoje no blog e estou impressionado . é muito dificil achar alguém que disposto a compartilhar conhecimento sem cobrar valor .

    fique com Deus ,

    muito obrigado

  2. Silvano dos Santos disse:

    boa tarde ,
    amigo Marcos , como faço para usar o calendario em form e preencher uma caixa de texto ao clicar no dia desejado.

    obrigado

  3. Marcos Rieper disse:

    Boa tarde Silvano,

    Pra fazer isso você pode mudar o código ActiveCell.Value = MonthView1.Value para TextBox.Text = MonthView1.Value

    Private Sub MonthView1_DateDblClick(ByVal DateDblClicked As Date)
    TextBox.Text = MonthView1.Value
    frmCalendario.Hide
    End Sub

    Abraço

    Marcos Rieper

  4. Marcelo Damascena disse:

    Bom dia Marcos,

    Achei muito boa a idéia. Tenho um formulário onde jogo uma data para vencimento e fiquei muito interessado em fazer com o MonthView, acredito que trará mais interatividade ao usuário. Porem quando arrasto o controle aparece uma mensagem me dizendo que o elemento não foi encontrado. Consegue me ajudar?

    Abraço

    Marcelo Damascena

  5. antonio disse:

    Marco,

    Quando eu chamo o calendario gostaria que ele viesse sempre aberto no mes atual, como faço isso.
    abraço

  6. Gabrimar disse:

    Marcos, fiz tudo certinho, mas quando acesso o atalho, aparece um erro chamado: “ERRO EM TEMPO DE EXECUÇÃO 424. O OBJETO É OBRIGATÓRIO”. Você pode me ajudar?

  7. Marcos Rieper disse:

    Boa tarde Gabrimar,

    Pode me enviar por email que eu dou uma olhada. marcos.rieper@gmail.com

    At.

    Marcos Rieper

  8. Paype disse:

    Olá! excelente TOPICO ele me ajudou e MUITO !!!
    apenas quando fui utilizar o note nao encontrei
    Microsoft MonthView Control 6.0
    para poder utilizar e continuar desenvolvendo no note…
    só posso usar no PC onde tenho instaldo direitinho o arquivo OCX
    mscomct2.ocx 647KB SP6 lá no System32 bem tentei de diversas maneiras
    mas ele simplismente nao APARECE !!! seleciono a OCX mas nao aparece
    alguem já passou esse sufuco pra poder me dar um auxilio …?
    quando vou em referencia sendo que Microsoft Windows Common Controls-2 6.0 (SP6)
    nao aparece na lista de referencias então vou em procurar e seleciono a OCX mscomct2
    fica aparecendo lá como se estivesse tudo certinho logo indo em controles adicionais
    verifico que nao tem o MONTHVIEW lá fecho o EXCEL abro ele novamente e
    Microsoft Windows Common Controls-2 6.0 (SP6)
    não aparece na lista de referencias NOVAMENTE !!!

    o negocio ta sinistro !!! h aH ah A nem sei mais de nada !!! h aH ah H A

    estou pesquisando e muito e todos os cantos só diz pra colocar lá no Sistem32
    que funciona … mas no meu caso não esta sendo tão simples assim nao …

    DESDE JÁ AGRADEÇO A ATENÇÃO e desculpe pelo texto imenso … VALEU !!!

  9. Paype disse:

    OLA !!!! consegui a resposta pra minha questão !!!
    como no note é seven tive um flash hehehe, estou mexendo no System32
    sem ser o user Administrador ativando referencia tbm … e depois ela some…
    vou tentar pelo ADMINISTRADOR a fazer o mesmo entao como é padrao do ADMIN estar OFF
    tive que ativa-lo para isso apenas aperte Windows+R digite CMD aperte ENTER
    e nesta tela preta digite NET USER ADMINISTRADOR /ACTIVE:YES
    o arquivo já estava lá no System32 mscomct2.ocx (647KB que é o SP6)
    então abri o Excel apertei ALT+F11 crie um UserForm ou abra o seu…
    resumindo pode seguir pelo POST excelente acima dos COMENTARIOS !!

    Depois de estar tudo OK tudo funcionando como deveria pode desativar o ADMINISTRADOR
    como eu fiz tbm NET USER ADMINISTRADOR /ACTIVE:NO

    E VALEU !!!

  10. Maico disse:

    Olá Marcos,
    Achei muito boa sua ideia do calendario, Parabéns, eu estou tentando colocar ele em um formulário que estou criando, mas não estou tendo muito sucesso, será que poderias me enviar seu e-mail para lhe passar o formulário para você me ajudar.

    Abraços

  11. Marcia disse:

    Olá, poderia me informar em qual Excel foi criada a VBA? Estou usando o excel 2003 e não encontrei o controle Microsoft MonthView Control 6.0 (SP4).
    Obrigada
    Marcia

  12. gabriela disse:

    Show de bolaaaaaa
    valeu!!!!!!!!

  13. marcleo disse:

    alguem pode mim ajudar ?
    instalei o excel 2010 e ai todas as planilhas que eu tenho com calendar1 não funciona mais . dar erro .

  14. PAULO MASCARENHAS disse:

    Novamente, atendeu a todas as minhas expectativas e necessidades.
    Obrigado e parabens pelo otimo site.
    abs

  15. Allan disse:

    Excelente Marcos, porem o meu está dando o mesmo erro que o Gabrimar

    “ERRO EM TEMPO DE EXECUÇÃO 424. O OBJETO É OBRIGATÓRIO”

    como resolver?

  16. Marcos Rieper disse:

    Boa tarde Allan,

    Qual a versão do seu Excel?

    Abraço

    Marcos Rieper

  17. james disse:

    Amigo gostaria de fazer o seguinte filtro:

    Gostaria de criar um form que tivesse um calendário para selecionar a “DATA INICIAL” e outro para a “DATA FINAL”, e um botão FILTRAR, com isso, esse botão filtraria os dados baseados nas datas escolhidas nos calendários

    como faria isso??

  18. Marcos Rieper disse:

    Boa tarde James,

    Dê uma olhada neste artigo, talvez possa te ajudar http://guiadoexcel.com.br/painel-contas-a-pagar-com-filtro-avancado-e-vba.

    Abraço

    Marcos Rieper

  19. Sida disse:

    Valeu pela dica, mas o meu problema é mais complexo, a saber:
    uma célula teria uma cx de listagem com os meses do ano e uma coluna com os dias. Ao se escolher o mês na caixa de listagem (ex.: julho) automaticamente a coluna dos dias mudaria referente a sabado e domingo.
    Ex. Em JUNHO tivemos os dias 2 e 3; 9 e 10; 16 e 17; 23 e 24 e 30 como sábado e domingo. No entanto, em JULHO, os sábados e domingos são os dias 7 e 8; 14 e 15; 21 e 22; 28 e 29. Isto para mim é super importante, pois nestes dias a planilha não poderá ser preenchida. Como fazer??

  20. nailson disse:

    e como faço para usar no oficce 2007? lá não tem esse controle, só o calendario 12.0

  21. Marcos Rieper disse:

    Boa tarde Nailson,

    Funciona somente no 2007 este componente não tem no 2010, acho que no seu irá funcionar.

    Abraço

    Marcos Rieper

  22. Marta disse:

    Existe uma maneira de fazer funcionar no Excel 2010 rodando em Win 7 64 bits? Não achei como incluir o Microsoft MonthView Control 6.0 (SP4)

  23. Marcos Rieper disse:

    Boa noite Marta,

    Eu também não identifiquei como incluir esta funcionalidade no Windows7 e Office 2010.

    Abraço

    Marcos Rieper

  24. Planilhas Excel disse:

    Olá, utilizo Windows 7 e Office 2007 e consegui seguir essa dica sem problemas.

  25. luiz disse:

    boa noite.
    excelente tópico!
    porém, também tive o mesmo problema que outras pessoas mencionaram aqui, aparece a mensagem:
    “ERRO EM TEMPO DE EXECUÇÃO 424. O OBJETO É OBRIGATÓRIO”
    meu office é o 2010.
    pode me ajudar?
    obrigado!

  26. Marcos Rieper disse:

    Boa noite Luiz,

    Infelizmente retiraram da versão do Office 2010 este componente só funcionando até a versão 2007.

    Estou fazendo um artigo com um componente que um amigo do site encontrou na internet que supre esta necessidade.

    Abraço

    Marcos Rieper

  27. [...] componentes é o calendário que era da classe mscal.ocx ao qual foi demonstrado o uso no artigo http://guiadoexcel.com.br/calendario-no-excel-com-vba, aonde era cria do um calendário VBA em um formulário que era chamado de qualquer local na [...]

  28. Erro,

    tá dando um erro na minha planilha.

    Sub lsCalendario()

    FrmCalendario.Show (fica grifado em amarelo)
    End Sub

  29. chocotoni disse:

    Rapaz, vc não sabe o tamanho do bem que me fez!!!
    Fiz e funcionou perfeitamente!!!
    Muito Obrigado

  30. JULIANA disse:

    PRECISA RENOMEAR O USERFORM PARA FRMCALENDARIO!!!!!!!!!!!!!!!

  31. Renata disse:

    Em controle adicional não aparece na lista -> Microsoft MonthView Control 6.0 (SP4), o que eu faço???

  32. Arlison disse:

    Muito bom o tópico, parabéns!!
    Para o pessoal que está com dificuldades com o office 2010, é possível instalar o controle, PORÉM só no Office 32bits, no Office 64 ele da um erro e não instala.
    Espero ter ajudado!!

  33. Bielan disse:

    sumiu no 2013 num tem o calendário

  34. Marcos Rieper disse:

    Bom dia Bielan,

    Realmente no Excel 2010 ou superior retiraram este importante componente, mas tem neste artigo como fazer para estas versões: http://guiadoexcel.com.br/calendario-no-excel-2010.

    Abraço

    Marcos Rieper

  35. Bruna disse:

    Ei, Marcos!
    Estou tendo o mesmo problema que algumas pessoas ai em cima, mas não encontrei a solução entre os comentários.

    “ERRO EM TEMPO DE EXECUÇÃO 424. O OBJETO É OBRIGATÓRIO”

    Abraço

  36. Marcos Rieper disse:

    Bom dia Bruna,

    Infelizmente este componente só está disponível até a versão Excel 2007, por isso que não funciona.

    Este componente não foi criado para a versão 64 bits.

    Abraço

    Marcos Rieper

  37. Ana Paula disse:

    Marcos!
    Estou tendo o mesmo problema que algumas pessoas ai em cima, mas não encontrei a solução entre os comentários.

    “ERRO EM TEMPO DE EXECUÇÃO 424. O OBJETO É OBRIGATÓRIO”

    Aguardo retorno

  38. Marcos Rieper disse:

    Boa noite Ana Paula,

    Este componente só está disponível no Excel 2007, o Excel 2010 em diante não tem mais este componente infelizmente.

    Abraço

    Marcos Rieper

Deixe o seu comentário


 
%d blogueiros gostam disto: