Essa funcionalidade também fica bem quando utilizada em Dashboards Dinâmicos.
Apply custom chart typeChange Chart TypeChange Default Chart TypeChange Excel Chart Plotarea Color Through VBAChanging SeriesCollection Values for Line ChartChanging a Chart Title Using VBA in ExcelCreating Charts in Microsoft Office Excel using Visual BasicDynamic and Interactive ChartsExcel ChartsExcel Charts & Charting TipsExcel Charts and GraphsGetting Started with VBA in ExcelMicrosoft Excel Chart TypesQuick Excel Chart VBA ExampleSetting the Default Chart Type in Microsoft ExcelUsing VBA to change Chart TypeVBA ChartVBA in Excel Charting
No momento em que o gráfico estiver ativo (com foco nele chart.setfocus - O gráfico fica ativo se o usuário o selecionou ou se foi ativado com o método Activate), utilize a propriedade ActiveChart para fazer referência ao mesmo.
Abaixo o código demonstra como ativar o primeiro gráfico, definindo em seguida, o título e o tipo deste.
Charts(1).Activate
With ActiveChartLet .Type = xlLineLet.HasTitle = TrueLet.ChartTitle.Text = "Vendas de Janeiro"End With
Pode colocar diversos tipos de gráficos dentro de um combobox e deixar o usuário escolhê-los a partir desta lista. Ao manipular o evento Change da caixa de combinação (combobox) esta terá o código abaixo. Esteja ciente de que, neste caso, por estar usando dados externos, deve tornar o objeto ChartData Ativo ao acessá-lo. Após mudar o nome da série e o valor (como no exemplo), o objeto gráfico deve ser atualizado para mostrar as alterações.
Private Sub ComboBox1_Change()' Author: Date: Contact: URL:' André Bernardes 05.04.2011 - 10:25. bernardess@gmail.com http://inanyplace.blogspot.com/' Application: XtractDashboard®.' .
Dim salesChart As Chart
Dim chartWorkSheet As Excel.Worksheet
' O gráfico. (O primeiro no ComboBox.)
Set salesChart = ActiveDocument.InlineShapes(2).Chart
' Ativa os dados antes de acessar o workbook.
salesChart.ChartData.Activate
' Obtém a primeira worksheet.
Set chartWorkSheet = salesChart.ChartData.Workbook.Worksheets(1)
' Escolhe a série baseada na opção do ComboBox.
Select Case ComboBox1.Value
Case "ABL1"
Let DashboardChart_01.SeriesCollection(1).Name = chartWorkSheet.Range("B1")
Let DashboardChart_01.SeriesCollection(1).Values = "='Sheet1'!$B$2:$B$5"
Case "ABL2"
Let DashboardChart_01.SeriesCollection(1).Name = chartWorkSheet.Range("C1")
Let DashboardChart_01.SeriesCollection(1).Values = "='Sheet1'!$C$2:$C$5"
Case "ABL3"
Let DashboardChart_01.SeriesCollection(1).Name = chartWorkSheet.Range("D1")
Let DashboardChart_01.SeriesCollection(1).Values = "='Sheet1'!$D$2:$D$5"
Case "ABL4"
Let DashboardChart_01.SeriesCollection(1).Name = chartWorkSheet.Range("E1")
Let DashboardChart_01.SeriesCollection(1).Values = "='Sheet1'!$E$2:$E$5"
End Select
' Atualizao o gráfico, tornando as mudanças visíveis.
salesChart.Refresh
' Minimiza o Excel.
Let chartWorkSheet.Application.WindowState = xlMinimized
End SubDim salesChart As ChartDim chartWorkSheet As Excel.Worksheet' O gráfico. (O primeiro no ComboBox.)Set salesChart = ActiveDocument.InlineShapes(2).Chart' Ativa os dados antes de acessar o workbook.salesChart.ChartData.Activate
' Obtém a primeira worksheet.
Set chartWorkSheet = salesChart.ChartData.Workbook.Worksheets(1)
' Escolhe a série baseada na opção do ComboBox.
Select Case ComboBox1.Value
Case "ABL1"
Let DashboardChart_01.SeriesCollection(1).Name = chartWorkSheet.Range("B1")
Let DashboardChart_01.SeriesCollection(1).Values = "='Sheet1'!$B$2:$B$5"
Case "ABL2"
Let DashboardChart_01.SeriesCollection(1).Name = chartWorkSheet.Range("C1")
Let DashboardChart_01.SeriesCollection(1).Values = "='Sheet1'!$C$2:$C$5"
Case "ABL3"
Let DashboardChart_01.SeriesCollection(1).Name = chartWorkSheet.Range("D1")
Let DashboardChart_01.SeriesCollection(1).Values = "='Sheet1'!$D$2:$D$5"
Case "ABL4"
Let DashboardChart_01.SeriesCollection(1).Name = chartWorkSheet.Range("E1")
Let DashboardChart_01.SeriesCollection(1).Values = "='Sheet1'!$E$2:$E$5"
End Select
' Atualizao o gráfico, tornando as mudanças visíveis.
salesChart.Refresh
' Minimiza o Excel.
Let chartWorkSheet.Application.WindowState = xlMinimized
End Sub
' Obtém a primeira worksheet.Set chartWorkSheet = salesChart.ChartData.Workbook.Worksheets(1)' Escolhe a série baseada na opção do ComboBox.Select Case ComboBox1.ValueCase "ABL1"Let DashboardChart_01.SeriesCollection(1).Name = chartWorkSheet.Range("B1")Let DashboardChart_01.SeriesCollection(1).Values = "='Sheet1'!$B$2:$B$5"Case "ABL2"Let DashboardChart_01.SeriesCollection(1).Name = chartWorkSheet.Range("C1")Let DashboardChart_01.SeriesCollection(1).Values = "='Sheet1'!$C$2:$C$5"Case "ABL3"Let DashboardChart_01.SeriesCollection(1).Name = chartWorkSheet.Range("D1")Let DashboardChart_01.SeriesCollection(1).Values = "='Sheet1'!$D$2:$D$5"Case "ABL4"Let DashboardChart_01.SeriesCollection(1).Name = chartWorkSheet.Range("E1")Let DashboardChart_01.SeriesCollection(1).Values = "='Sheet1'!$E$2:$E$5"End Select' Atualizao o gráfico, tornando as mudanças visíveis.salesChart.Refresh' Minimiza o Excel.Let chartWorkSheet.Application.WindowState = xlMinimizedEnd Sub