Neste artigo vou mostrar-te como podes utilizar botões de opção no Excel! Os botões de opção são comandos que habitualmente são usados em formulários, mas que podem ser aplicados na folha de cálculo. São muito fáceis de configurar, e com a ajuda de funções permitem aplicar interatividade nos mapas de Excel de uma forma muito simples.
Contudo os comandos de formulário, neste caso, os botões de opção também apresentam algumas limitações, principalmente na parte estética / visual e se pretenderes que o teu relatório tenha um aspeto mais interessante deverás pensar em outras soluções! É isso que te vou mostrar neste artigo! Como podes utilizar botões, construídos por ti, que realizam a mesma operação.
No exemplo vamos utilizar os botões de opção para mostrar um intervalo de dados, de acordo com a opção selecionada, o que significa que vamos utilizar a função SELECIONAR [CHOOSE] que permite retornar um valor, de acordo com um número [núm_índice]. Este número é retornado pelo botão de opção!
O ficheiro base já contém as folhas utilizadas no artigo e cada folha tem os dados necessários:
- Dados resumidos necessários para o gráfico
- Gráfico combinado com uma das series em colunas e a segunda série em linhas com marcadores.

Exemplo de uma das páginas:

Começar por definir os botões de opção
Os botões de opção estão disponíveis no separador PROGRAMADOR [DEVELOPER]. Caso não tenhas o separador, podes adicioná-lo nas opções do Excel, através da personalização do Friso.
Menu Ficheiro [File] > Opções [Options] > Personalizar Friso [Customize Ribbon]

Assim que tenhas o menu Programador, podes começar a inserir o botão de opção, vamos inserir 3 botões de opção, um para cada coluna da tabela que pretendemos mostrar no gráfico:
- Proveitos PY
- Diferença Homólogo
- Acumulados
Estas 3 colunas, vão ser comparadas, uma a uma à coluna base: Proveitos

No primeiro botão de opção vamos editar o texto e aceder às opções de formatação do controlo.
Nestas opções definimos apenas uma opção: Ligação à célula. Esta opção permite associar a uma célula o valor da opção escolhida. Este valor é um número, que vai ser utilizado pela função SELECIONAR [CHOOSE] para retornar o intervalo pretendido.

Repetimos o mesmo processo para mais 3 botões de opção…

Formatar os controlos
Os controlos de formulário, podem ser formatados com algumas propriedades, nomeadamente o preenchimento e linhas, mas são opções limitadas.
Atribuir a interatividade no relatório
A parte interativa do relatório é criada através de uma conjugação entre os controlos de formulário, que geram o número em função da opção selecionada (célula A1), e uma função que possa ler o número. Neste caso temos várias funções que podem ser utilizadas, como a função ÍNDICE [INDEX], SE [IF], entre outras, mas vou optar pela função SELECIONAR [CHOOSE].
SELECIONAR(núm_índice, valor1, [valor2], …)
- Núm_índice: Argumento Obrigatório. Este valor é um número entre 1 e 254 ou uma fórmula ou referência a uma célula que contenha um número entre 1 e 254. Neste caso utilizamos a referência da célula A1 (ligada ao controlo de formulário).
- Valor1; valor2: O Valor 1 é obrigatório, os valores posteriores são opcionais. Estes são os resultados partir dos quais a função SELECIONAR seleciona um valor ou uma ação que será executada com base no núm_índice. Os argumentos podem ser números, referências de células, nomes definidos, fórmulas, funções ou texto. No caso vamos utilizar referencias de nomes, uma para cada intervalo que pretendemos utilizar na função.

Criamos um nome para cada intervalo:
- Proveitos PY: ProveitosPY
- Dif. Homólogo: Diferença
- Acumulados: Acumulados

Na função deverás colocar os valores pela ordem correta para apresentar os intervalos de resultado.

Neste momento deverás ter o relatório já interativo, com a coluna a mudar, e o gráfico também, comparando sempre os proveitos com outro período em análise.

Alternativa: Interatividade com botões
No segundo cenário, vamos utilizar botões para definir a interatividade! Os botões podem ser formatados com mais opções, e podes inclusive utilizar imagens ou infográficos para o efeito. Neste caso vamos atribuir a cada botão uma rotina simples em VBA que vai simular a mesma lógica do botão de controlo, ou seja, atribuir um valor a uma célula.
Na segunda folha utilizamos a função SELECIONAR à mesma, com a mesma lógica, contudo vamos mudar o valor da célula A1 através de código VBA.

Inserir os botões
Começamos por inserir os botões a gosto e com a formatação que acharmos mais interessante.

No menu PROGRAMADOR [DEVELOPER] acedemos ao Visual Basic Editor, e num novo módulo, criamos 3 rotinas, uma para cada botão:

Inserimos o seguinte Código no módulo que para cada rotina apenas associa o valor ao intervalo da célula.
Sub BotaoHomologo()
Range(“A1”).Value = 1
End Sub
Sub BotaoDiferenca()
Range(“A1”).Value = 2
End Sub
Sub BotaoAcumulados()
Range(“A1”).Value = 3
End Sub
Para cada botão associamos a “Macro” correta.


E a partir deste momento o segundo relatório também está interativo tal como o primeiro, mas com botões mais apelativos!
Aproveitar o potencial do código VBA
Já que estamos a usar VBA porque não aproveitar o potencial do código e manipular os objetos da folha de cálculo! Aliás é para isso que usamos VBA!
Para terminar o exemplo vamos então alterar a segunda série do gráfico, uma vez que é um gráfico de combinação (Combo chart) podemos através do código mudar a serie representada, neste caso a segunda que representa a linha.

Acrescentamos ao código já criado o restante código para mudar as opções gráfico.
Sub BotaoHomologo()
Range(“A1”).Value = 1
‘ Ativar o gráfico
ActiveSheet.ChartObjects(1).Activate
‘ Alterar a série do gráfico
With ActiveChart.SeriesCollection(2)
.ChartType = xlLineMarkers ‘ Gráfico de linhas com marcador
.Format.Line.Visible = msoFalse ‘ Ocultar a linha do gráfico
End With
‘Alterar o Título do gráfico
ActiveChart.ChartTitle.Text = “Proveitos vs Homólogos”
‘Selecionar a célula A1
Range(“A1”).Select
End Sub
Sub BotaoDiferenca()
Range(“A1”).Value = 2
ActiveSheet.ChartObjects(1).Activate
With ActiveChart
.SeriesCollection(2).ChartType = xlColumnStacked ‘ Gráfico de colunas empilhadas
.ChartTitle.Text = “Diferença de proveitos / homólogos” ‘ Alterar o título do gráfico
End With
Range(“A1”).Select
End Sub
Sub BotaoAcumulados()
Range(“A1”).Value = 3
ActiveSheet.ChartObjects(1).Activate
With ActiveChart
.SeriesCollection(2).ChartType = xlArea ‘ Gráfico de área
.ChartTitle.Text = “Proveitos e Acumulados” ‘ Alterar o título do gráfico
End With
Range(“A1”).Select
End Sub
E o relatório fica mais dinâmico, agora com o gráfico e o título também dinâmicos em função da opção selecionada.
Gráfico para os Proveitos PY:

Gráfico para a Diferença Homólogos:

Gráfico para Acumulados:


Leave a Reply