VBA Excel Basic - Gráfico - Alterando todas as Fontes de todos os Objetos em todos os Gráficos
No desenvolvimento e implementação de Dashboards sempre precisaremos aproveitar a construção de sets (conjuntos) de gráficos previamente desenvolvidos. Geralmente estes foram feitos por pessoas que, apesar de saberem criar gráficos, desconhecem alguns aspectos importantes da sua manutenção e criação.
Existe um motivo para mantermos todas as fontes dentro de um gráfico sempre como o mesmo tipo. Qual?
Velocidade
Sim, quanto mais fontes diferentes estiverem sendo usadas num gráfico, mais lento este será carregado. E se for um conjunto com diversos gráficos então, isso será multiplicado, isso quando não trouxer transtornos a atualização.
DICA: Mantenha todas as fontes, de todos os objetos dentro de um gráfico, com o mesmo tipo.
Mas ... Como fazemos? Que código devo usar?
Bem, o código abaixo, além de colocar todas as fontes dentro de código, num mesmo tipo, ainda permite colocar os títulos e os valores das séries neles como negrito. Divirta-se!
Sub ChangeAllFontsAllCharts()
A coleção Charts contém um objeto Chart para cada planilha de gráfico em uma pasta de trabalho. Use Charts (índice), onde índice é o número ou o nome do índice da planilha de gráfico, para retornar um único objeto Chart. O número do índice do gráfico representa a posição da planilha do gráfico na barra da guia da pasta de trabalho. Charts (1) é o primeiro gráfico (mais à esquerda) na pasta de trabalho; Charts (Charts.Count) é o último (mais à direita). Todas as planilhas de gráfico estão incluídas na contagem do índice, mesmo se estiverem ocultas. O nome da planilha de gráfica é mostrado na guia da pasta de trabalho para o gráfico. Use a propriedade Name para definir ou retornar o nome do gráfico.' Author: André Luiz Bernardes - A&A - In Any Place - andreluizbernardes@gmail.com' Date: 16/05/2016 - 06:45' Application: Field Force Dashboard Analysis® - © A&A - In Any Place 2016, Inc. Todos os direitos reservados.' Company: © A&A - In Any Place, Inc. Todos os direitos reservados.' Purpose: Change all fonts in all charts in activesheetDim Charts As ChartObjectDim chSeries As SeriesDim nFontName As StringLet nFontName = "Arial"For Each Charts In ActiveSheet.ChartObjectsDebug.Print "Nome do Gráfico:" & Charts.NameCharts.Activate' All chart Fonts.With ActiveChart.ChartArea.Format.TextFrame2.TextRange.FontLet .Name = nFontName'Let .Size = 14End With' Title Fonts.'Let ActiveChart.ChartTitle.Font.Name = nFontNameLet ActiveChart.ChartTitle.Font.FontStyle = "Bold"' Series Fonts.For Each chSeries In ActiveChart.SeriesCollectionDebug.Print "Nome da Série:" & ActiveChart.NameWith chSeries.DataLabels.Font'Let .Name = nFontNameLet .Size = 12Let .FontStyle = "Bold"End WithNextNext ChartsEnd Sub
O objeto Chart também é membro da coleção Sheets, que contém todas as planilhas na pasta de trabalho (planilhas de gráfico e planilhas). Use Sheets (índice), onde índice é o número ou o nome do índice da planilha, para retornar uma única planilha.
Quando um gráfico estiver no objeto ativo, poderá usar a propriedade ActiveChart para fazer referência a ele. Uma planilha de gráfico será ativa se o usuário a tiver selecionado ou se ela tiver sido ativada com o método Activate do objeto Chart ou com o método Activate do objeto ChartObject.
Um gráfico interno será ativo caso o usuário o tenha selecionado ou se o objeto ChartObject no qual ele está contido tiver sido ativado com o método Activate.
O uso da propriedade ActiveChart permite que você escreva código do Visual Basic que possa fazer referência a um gráfico interno ou a uma planilha de gráfico (o que estiver ativo).
Quando uma planilha de gráfico estiver na planilha ativa, você poderá usar a propriedade ActiveSheet para fazer referência a ela.
MSDN SAMPLES