Propósito

✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.

.: Vitrine

Carregando artigos...

Views

Mostrando postagens com marcador ActiveChart. Mostrar todas as postagens
Mostrando postagens com marcador ActiveChart. Mostrar todas as postagens

VBA Excel Intermediário - Mudando a Referência de Vários Gráficos ao mesmo tempo

VBA Excel Intermediário - Mudando a Referência de Vários Gráficos ao mesmo tempo



Vez ou outra precisamos mover nossos gráficos entre planilhas e neste momento dá um frio na barriga, porque para isso precisaremos mexer em todas as referências dos gráficos contidos em nossa activesheet.

E como pode imaginar, fazer isso manualmente certamente propiciará erros. Sim, não há nada mais fácil do que implementar erros durante o momento de uma transcrição de código e/ou referências. 

Neste momento seria muito bom termos à disposição um código que fizesse isso para nós hein! Que tal se apenas precisássemos colar o código, posicionarmo-nos dentro da planilha onde todas as referências precisem ser corrigidas e voilá, TODAS AS REFERÊNCIAS são acertadas sem alterar nenhuma configuração prévia dos nossos gráficos.

Pensando nisso, compartilho o código abaixo, o qual, espero, possa livrá-los de transtornos...


Sub ChangeSeriesFormulaAllCharts()
    '      Author: André Luiz Bernardes - A&A - In Any Place - andreluizbernardes@gmail.com
    '        Date: 13/05/2016 - 11:45
    ' Application: Field Force Dashboard Analysis® - © A&A - In Any Place 2016, Inc. Todos os direitos reservados.
    '     Company: © A&A - In Any Place 2016, Inc. Todos os direitos reservados.
    '     Purpose: Extract old reference and put new chart references
    ''' Do all charts in sheet
    Dim oChart As ChartObject
    Dim OldString As String, NewString As String
    Dim mySrs As Series
    Let OldString = "[REUNIAO PERFORMANCE.xlsx]" 'InputBox("Enter the string to be replaced:", "Enter old string")
    If Len(OldString) > 1 Then
        Let NewString = ""  'InputBox("Enter the string to replace " & """" _
            & OldString & """:", "Enter new string")
     
        For Each oChart In ActiveSheet.ChartObjects
            Debug.Print oChart.Name
         
            For Each mySrs In oChart.Chart.SeriesCollection
                Debug.Print "CHART " & oChart.Name & " OLD: " & mySrs.Formula & " NEW: " & Replace(mySrs.Formula, OldString, NewString)
                Let mySrs.Formula = Replace(mySrs.Formula, OldString, NewString)
            Next
        Next
    Else
        MsgBox "Nothing to be replaced.", vbInformation, "Nothing Entered"
    End If
End Sub
 

VBA Excel Basic - Gráfico - Alterando todas as Fontes de todos os Objetos em todos os Gráficos

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()
    '      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 activesheet
    Dim Charts As ChartObject
    Dim chSeries As Series
    Dim nFontName As String
    Let nFontName = "Arial"
    For Each Charts In ActiveSheet.ChartObjects
        Debug.Print "Nome do Gráfico:" & Charts.Name
        Charts.Activate
        ' All chart Fonts.
        With ActiveChart.ChartArea.Format.TextFrame2.TextRange.Font
            Let .Name = nFontName
            'Let .Size = 14
        End With
        ' Title Fonts.
        'Let ActiveChart.ChartTitle.Font.Name = nFontName
        Let ActiveChart.ChartTitle.Font.FontStyle = "Bold"
        ' Series Fonts.
        For Each chSeries In ActiveChart.SeriesCollection
            Debug.Print "Nome da Série:" & ActiveChart.Name
            With chSeries.DataLabels.Font
                'Let .Name = nFontName
                Let .Size = 12
                Let .FontStyle = "Bold"
            End With
        Next
    Next Charts
End Sub
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.

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



VBA Excel - Torne homogêneas todas as fontes e cores.



Quando o gráfico está ativo, use a propriedade ActiveChart para fazer referência a ele.

O gráfico fica ativo se o usuário o selecionar ou se for ativado com o método Activate.

O exemplo abaixo ativa o 1º gráfico e, em seguida, define o título e o tipo do gráfico.

Charts(1).Activate
With ActiveChart
   Let .Type = xlLine
   Let .HasTitle = True
   Let .ChartTitle.Text = "Vendas de Janeiro"
End With

Tags: Bernardes, VBA, Office, Excel, font, type, ActiveChart, ChartTitle


André Luiz Bernardes
A&A® - Work smart, not hard.

diHITT - Notícias