Aprende a marcar compromissos com o Microsoft Excel
Neste novo artigo, vou mostrar-te, passo-a-passo, como podes utilizar datas para automatizar um agendamento de compromissos, baseado na data introduzida, no Microsoft Excel. Vamos lá?
Como já reparaste, vamos dar continuidade ao artigo anterior, onde aprendeste a criar um modelo de calendário mensal, no Microsoft Excel! Assim, para este processo vamos utilizar, como ficheiro base, o calendário mensal que foi criado nesse artigo. Nesse, vamos adicionar datas de compromisso e automatizar um lembrete para essa data.
Não percas aqui este processo detalhado e, se tiveres alguma dúvida, envia-nos a tua mensagem... ficamos à espera!
Elementos do mapa de calendário mensal
Recordando os elementos do calendário mensal temos os seguintes:
- Duas células onde introduzimos respetivamente o ano (C2) e mês (C3).
- As datas surgem a verde para os dias correspondentes ao mês escolhido e a cinzento para os dias que não representam o mês, ambas definidas com formatação condicional.
- Os compromissos agendados aparecem destacados no calendário, também com formatação condicional.
O objetivo passa então por criar um evento para a data colocada com uma caixa de mensagem a surgir automaticamente quando da data ocorre e numa hora introduzida pelo utilizador, com a respetiva descrição do compromisso.
Aceder ao Visual Basic Editor
A rotina é executada em VBA e por isso temos de aceder ao Visual Basic Editor. Para tal deve ativar o menu Programador [Developer] caso ainda não tenha acedendo ao Menu Ficheiro [File] | Opções [Option] | Personalizar Friso [Customize Ribbon] e ativar o menu.
De seguida já podemos aceder ao menu e ao Visual Basic.
Já no Visual Basic Editor vamos inserir um módulo que irá conter as duas rotinas necessária para executar o automatismo.
Criação das rotinas necessárias
Cada compromisso deverá estar associado a duas rotinas (sub-procedures):
- Uma rotina que irá definir o evento que ocorre numa determinada data e hora
- Uma segunda rotina que corresponde ao procedimento executado pela primeira rotina, uma vez que o evento gerado (Application.OnTime) necessita de um segundo procedimento a ser executado.
Definir a primeira rotina:
A primeira rotina chama-se MarcarCompromisso e começamos a defini-la como um procedimento.
Sub MarcarCompromisso() Código inserido aqui… End Sub
De seguida definimos as duas variáveis necessárias para guardar os valores (Data e Hora) do compromisso.
Sub MarcarCompromisso() Dim data As Date 'variável que armazena a data do compromisso Dim hora As String 'variável que armazena a hora do compromisso End Sub
E continuamos o procedimento agora atribuindo os valores a cada uma das variáveis.
- Para a data, o valor será o conteúdo da célula J7
- Para a hora vamos utilizar a função InputBox para que seja o utilizador a definir a hora que pretende para o compromisso.
Sub MarcarCompromisso() Dim data As Date 'variável que armazena a data do compromisso Dim hora As String 'variável que armazena a hora do compromisso data = Range("J7").Value hora = InputBox(Prompt:="Coloque a hora do seu compromisso no formato hh:mm", _ Title:="Hora do Compromisso") End Sub
Para finalizar a primeira rotina, ativamos então o evento de aplicação que permite agendar o compromisso.
A última expressão do código utiliza os seguintes elementos:
- Application.OnTime: Agenda um novo procedimento para ser executado num determinado momento especificado no futuro (data) e numa hora específica do dia (hora) ou após um período específico.
Nos parâmetros do método OnTime temos os 2 argumentos obrigatórios que vamos usar:
- EarliestTime: indicamos a data em que o procedimento é executado onde neste caso juntamos as duas variáveis data + hora, que é definida pela função TimeValue para converter o valor da hora introduzido num formato numérico de hora.
- Procedure: O nome do procedimento a ser executado que será a segunda rotina, neste caso chamada “DescricaoCompromisso”
Sub MarcarCompromisso() Dim data As Date 'variável que armazena a data do compromisso Dim hora As String 'variável que armazena a hora do compromisso data = Range("J7").Value hora = InputBox(Prompt:="Coloque a hora do seu compromisso no formato hh:mm", _ Title:="Hora do Compromisso") Application.OnTime data + TimeValue(hora), "DescricaoCompromisso” End Sub
Definir a segunda rotina:
A segunda rotina será então o procedimento chamado pelo método OnTime. A rotina é apenas definida por um valor, que é a descrição do compromisso e uma caixa de mensagem que surge com uma mensagem personalizada.
Sub DescricaoCompromisso() Dim Compromisso As String Compromisso = Range("J7").Offset(0, 2).Value Beep MsgBox Prompt:="O seu compromisso foi agendado: " & Compromisso End Sub
A rotina é caracterizada pelas seguintes expressões:
- Definição de uma variável Compromisso que irá armazenar a descrição do compromisso.
- Esta variável é definida pelo valor da célula J7, deslocada duas colunas para a direita, ou seja, pelo valor da célula L7.
- O procedimento emite um som pela instrução Beep (esta questão é opcional ?)
- Por último definimos a função MsgBox para chamar uma caixa de mensagem com um determinado texto, composto pela concatenação de "O seu compromisso foi agendado: " com o valor da variável Compromisso.
Atribuir a rotina a uma imagem (ícone):
Para definir o agendamento podemos atribuir a macro MarcarCompromisso a uma imagem ou ícone.
Com o botão direito do rato sobre a imagem / ícone, atribuímos a macro pretendida:
Selecionamos a macro pretendida…
E a macro fica pronta a executar na data e hora definidas assim que o utilizador pressionar o botão.
Na data e hora agendadas surge a mensagem correspondente:
O calendário fica então disponível agora automatizado também para os compromissos agendados.
Cada linha de compromisso deve ser definida com as rotinas e o respetivo ícone, se o utilizador pretender.
Outros conteúdos relevantes:
Personalizar controlos de formulários em Power Apps
Neste vídeo, vou mostrar-te como podes modificar um formulário em Power Apps.
Power BI (Desktop): parâmetros de campo para alterar visuais
Neste vídeo, vou mostrar-te como podes criar um relatório dinâmico, em Power BI (Desktop), para poder aplicar vários parâmetros de analise em visuais. Vamos lá?