Os gráficos e tabelas do Excel são usados para exibir dados visualmente. Neste tutorial, vamos cobrir como usar o VBA para criar e manipular gráficos e elementos de gráficos.
Você pode criar gráficos incorporados em uma planilha ou gráficos em suas próprias planilhas.
Criando um gráfico incorporado usando VBA
Temos o intervalo A1: B4 que contém os dados de origem, mostrados abaixo:
Você pode criar um gráfico usando o método ChartObjects.Add. O código a seguir criará um gráfico incorporado na planilha:
12345678 | Sub CreateEmbeddedChartUsingChartObject ()Dim embeddedchart As ChartObjectSet embeddedchart = Sheets ("Sheet1"). ChartObjects.Add (Left: = 180, Width: = 300, Top: = 7, Height: = 200)embeddedchart.Chart.SetSourceData Source: = Sheets ("Sheet1"). Range ("A1: B4")End Sub |
O resultado é:
Você também pode criar um gráfico usando o método Shapes.AddChart. O código a seguir criará um gráfico incorporado na planilha:
12345678 | Sub CreateEmbeddedChartUsingShapesAddChart ()Dim embeddedchart As ShapeSet embeddedchart = Sheets ("Sheet1"). Shapes.AddChartembeddedchart.Chart.SetSourceData Source: = Sheets ("Sheet1"). Range ("A1: B4")End Sub |
Especificando um tipo de gráfico usando VBA
Temos o intervalo A1: B5 que contém os dados de origem, mostrados abaixo:
Você pode especificar um tipo de gráfico usando a propriedade ChartType. O código a seguir criará um gráfico de pizza na planilha, já que a propriedade ChartType foi definida como xlPie:
123456789 | Sub SpecifyAChartType ()Dim chrt As ChartObjectDefina chrt = Sheets ("Sheet1"). ChartObjects.Add (Left: = 180, Width: = 270, Top: = 7, Height: = 210)chrt.Chart.SetSourceData Source: = Sheets ("Sheet1"). Range ("A1: B5")chrt.Chart.ChartType = xlPieEnd Sub |
O resultado é:
Estes são alguns dos tipos de gráficos populares que geralmente são especificados, embora existam outros:
- xlArea
- xlPie
- xlLine
- xlRadar
- xlXYScatter
- xlSurface
- xlBubble
- xlBarClustered
- xlColumnClustered
Adicionando um título de gráfico usando VBA
Temos um gráfico selecionado na planilha conforme mostrado abaixo:
Você deve adicionar um título de gráfico primeiro usando o método Chart.SetElement e, em seguida, especificar o texto do título do gráfico definindo a propriedade ChartTitle.Text.
O código a seguir mostra como adicionar um título de gráfico e especificar o texto do título do gráfico ativo:
123456 | Sub AddedAndSettingAChartTitle ()ActiveChart.SetElement (msoElementChartTitleAboveChart)ActiveChart.ChartTitle.Text = "As Vendas do Produto"End Sub |
O resultado é:
Nota: Você deve selecionar o gráfico primeiro para torná-lo o Gráfico ativo para poder usar o objeto ActiveChart em seu código.
Alterando a cor de fundo do gráfico usando VBA
Temos um gráfico selecionado na planilha conforme mostrado abaixo:
Você pode alterar a cor de fundo de todo o gráfico definindo a propriedade RGB do objeto FillFormat do objeto ChartArea. O código a seguir dará ao gráfico uma cor de fundo laranja claro:
12345 | Sub AddedABackgroundColorToTheChartArea ()ActiveChart.ChartArea.Format.Fill.ForeColor.RGB = RGB (253, 242, 227)End Sub |
O resultado é:
Você também pode alterar a cor de fundo de todo o gráfico definindo a propriedade ColorIndex do objeto Interior do objeto ChartArea. O código a seguir dará ao gráfico uma cor de fundo laranja:
12345 | Sub AddedABackgroundColorToTheChartArea ()ActiveChart.ChartArea.Interior.ColorIndex = 40End Sub |
O resultado é:
Nota: A propriedade ColorIndex permite que você especifique uma cor com base em um valor de 1 a 56, extraído da paleta predefinida, para ver quais valores representam as diferentes cores, clique aqui.
Alterando a cor da área de plotagem do gráfico usando VBA
Temos um gráfico selecionado na planilha conforme mostrado abaixo:
Você pode alterar a cor de fundo apenas da área de plotagem do gráfico, definindo a propriedade RGB do objeto FillFormat do objeto PlotArea. O código a seguir dará à área de plotagem do gráfico uma cor de fundo verde claro:
12345 | Sub AddedABackgroundColorToThePlotArea ()ActiveChart.PlotArea.Format.Fill.ForeColor.RGB = RGB (208, 254, 202)End Sub |
O resultado é:
Adicionando uma legenda usando VBA
Temos um gráfico selecionado na planilha, conforme mostrado a seguir:
Você pode adicionar uma legenda usando o método Chart.SetElement. O código a seguir adiciona uma legenda à esquerda do gráfico:
12345 | Sub AddedALegend ()ActiveChart.SetElement (msoElementLegendLeft)End Sub |
O resultado é:
Você pode especificar a posição da legenda das seguintes maneiras:
- msoElementLegendLeft - exibe a legenda no lado esquerdo do gráfico.
- msoElementLegendLeftOverlay - sobrepõe a legenda no lado esquerdo do gráfico.
- msoElementLegendRight - exibe a legenda no lado direito do gráfico.
- msoElementLegendRightOverlay - sobrepõe a legenda no lado direito do gráfico.
- msoElementLegendBottom - exibe a legenda na parte inferior do gráfico.
- msoElementLegendTop - exibe a legenda no topo do gráfico.
Adicionando rótulos de dados usando VBA
Temos um gráfico selecionado na planilha, conforme mostrado a seguir:
Você pode adicionar rótulos de dados usando o método Chart.SetElement. O código a seguir adiciona rótulos de dados à extremidade interna do gráfico:
12345 | Sub AdicionandoADataLabels ()ActiveChart.SetElement msoElementDataLabelInsideEndEnd Sub |
O resultado é:
Você pode especificar como os rótulos de dados são posicionados das seguintes maneiras:
- msoElementDataLabelShow - exibe rótulos de dados.
- msoElementDataLabelRight - exibe rótulos de dados à direita do gráfico.
- msoElementDataLabelLeft - exibe rótulos de dados à esquerda do gráfico.
- msoElementDataLabelTop - exibe rótulos de dados na parte superior do gráfico.
- msoElementDataLabelBestFit - determina o melhor ajuste.
- msoElementDataLabelBottom - exibe rótulos de dados na parte inferior do gráfico.
- msoElementDataLabelCallout - exibe rótulos de dados como um texto explicativo.
- msoElementDataLabelCenter - exibe rótulos de dados no centro.
- msoElementDataLabelInsideBase - exibe rótulos de dados na base interna.
- msoElementDataLabelOutSideEnd - exibe rótulos de dados na extremidade externa do gráfico.
- msoElementDataLabelInsideEnd - exibe rótulos de dados na extremidade interna do gráfico.
Adicionando um eixo X e um título no VBA
Temos um gráfico selecionado na planilha, conforme mostrado a seguir:
Você pode adicionar um título do eixo X e do eixo X usando o método Chart.SetElement. O código a seguir adiciona um título do eixo X e do eixo X ao gráfico:
123456789 | SubAdicionandoAnXAxisandXTitle ()Com ActiveChart.SetElement msoElementPrimaryCategoryAxisShow.SetElement msoElementPrimaryCategoryAxisTitleHorizontalTerminar comEnd Sub |
O resultado é:
Adicionando um eixo Y e um título no VBA
Temos um gráfico selecionado na planilha, conforme mostrado a seguir:
Você pode adicionar um título do eixo Y e do eixo Y usando o método Chart.SetElement. O código a seguir adiciona um título do eixo Y e do eixo Y ao gráfico:
1234567 | SubAdicionandoAYAxisandYTitle ()Com ActiveChart.SetElement msoElementPrimaryValueAxisShow.SetElement msoElementPrimaryValueAxisTitleHorizontalTerminar comEnd Sub |
O resultado é:
Alterando o formato do número de um eixo
Temos um gráfico selecionado na planilha, conforme mostrado a seguir:
Você pode alterar o formato de número de um eixo. O código a seguir altera o formato de número do eixo y para moeda:
12345 | Sub ChangingTheNumberFormat ()ActiveChart.Axes (xlValue) .TickLabels.NumberFormat = "$ #, ## 0.00"End Sub |
O resultado é:
Alterando a formatação da fonte em um gráfico
Temos o seguinte gráfico selecionado na planilha conforme mostrado abaixo:
Você pode alterar a formatação de toda a fonte do gráfico, referindo-se ao objeto de fonte e alterando seu nome, espessura da fonte e tamanho. O código a seguir altera o tipo, peso e tamanho da fonte de todo o gráfico.
12345678910 | Sub ChangingTheFontFormatting ()Com ActiveChart.ChartArea.Format.TextFrame2.TextRange.Font.Name = "Times New Roman".ChartArea.Format.TextFrame2.TextRange.Font.Bold = True.ChartArea.Format.TextFrame2.TextRange.Font.Size = 14Terminar com |
O resultado é:
Excluindo um gráfico usando VBA
Temos um gráfico selecionado na planilha, conforme mostrado a seguir:
Podemos usar o seguinte código para excluir este gráfico:
12345 | Sub DeletingTheChart ()ActiveChart.Parent.DeleteEnd Sub |
Referindo-se à coleção ChartObjects
Você pode acessar todos os gráficos incorporados em sua planilha ou pasta de trabalho consultando a coleção ChartObjects. Temos dois gráficos na mesma folha mostrada abaixo:
Iremos nos referir à coleção ChartObjects a fim de dar aos dois gráficos na planilha a mesma altura, largura, deletar as linhas de grade, fazer a cor de fundo a mesma, dar aos gráficos a mesma cor da área de plotagem e tornar a cor da linha da área de plotagem a mesma cor:
12345678910111213141516 | Sub ReferringToAllTheChartsOnASheet ()Dim cht As ChartObjectPara cada cht em ActiveSheet.ChartObjectscht.Height = 144,85cht.Width = 246,61cht.Chart.Axes (xlValue) .MajorGridlines.Deletecht.Chart.PlotArea.Format.Fill.ForeColor.RGB = RGB (242, 242, 242)cht.Chart.ChartArea.Format.Fill.ForeColor.RGB = RGB (234, 234, 234)cht.Chart.PlotArea.Format.Line.ForeColor.RGB = RGB (18, 97, 172)Próximo chtEnd Sub |
O resultado é:
Inserindo um gráfico em sua própria folha de gráfico
Temos o intervalo A1: B6 que contém os dados de origem, mostrados abaixo:
Você pode criar um gráfico usando o método Charts.Add. O código a seguir criará um gráfico em sua própria planilha de gráfico:
123456 | Sub InsertingAChartOnItsOwnChartSheet ()Folhas ("Folha1"). Intervalo ("A1: B6"). SelecioneCharts.AddEnd Sub |
O resultado é:
Veja alguns de nossos outros tutoriais de gráficos:
Gráficos em Excel
Crie um gráfico de barras no VBA