VBA Excel - Definindo o tipo de Gráfico - Change Chart Type.









O tipo de gráfico utilizado em uma planilha pode ser definido pelo usuário que estiver utilizando um MIS. Deixá-lo escolher o tipo pode tornar sua experiência mais enriquecedora do ponto de vista da análise.

Essa funcionalidade também fica bem quando utilizada em Dashboards Dinâmicos.
Apply custom chart type
Change Chart Type
Change Default Chart Type
Change Excel Chart Plotarea Color Through VBA
Changing SeriesCollection Values for Line Chart
Changing a Chart Title Using VBA in Excel
Creating Charts in Microsoft Office Excel using Visual Basic
Dynamic and Interactive Charts
Excel Charts
Excel Charts & Charting Tips
Excel Charts and Graphs
Getting Started with VBA in Excel
Microsoft Excel Chart Types
Quick Excel Chart VBA Example
Setting the Default Chart Type in Microsoft Excel
Using VBA to change Chart Type
VBA Chart
VBA 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 ActiveChart



    Let .Type = xlLine



    




Let 


.HasTitle = True



    




Let 


.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 Sub



    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 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.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




Referência: Microsoft MSDN


Tags: VBA, Office, Excel, chart, type, gráfico, tipo


Inspiration: 

        


VBA Access - Usando o Sistema de Cores do Windows(R) nas suas aplicações.

Hello Folks!

Quando estamos desenvolvendo aplicações que serão utilizadas em um departamento ou numa empresa, deparamo-nos com os 'gostos' personalizáveis dos usuários e apesar de desejarmos ignorá-los, devemos levá-los em consideração.

Também pode ser possível que o nosso cliente utilize a nossa aplicação em diversos locais diferentes e nestes casos o gosto das inúmeras pessoas que utilizarão nossa aplicação serão multiplicados ao excesso.




Nos casos acima e ainda em outros pode ser interessante permitir que a interface da aplicação possa adequar-se ao conjunto de cores padrão do Windows® que estiver configurado na máquina do usuário que a rodará.

Esse aparente detalhe pode ser a diferença entre fazer sua aplicação ser melhor aceita pelos usuários ou ser prontamente rejeitada por ter uma cor que não se harmoniza com o gosto deles.

Abaixo transcrevo uma solução muito interessante de Peter´s Software, sei que gostará, pelo menos como fonte de estudos e inspiração.

Abaixo segue o sistema de cores:

ID da Cor        Descrição da Cor
---------------        ----------------------------

-2147483648 Scroll bar
-2147483647 Desktop
-2147483646 Active window title bar
-2147483645 Inactive window title bar
-2147483644 Menu bar
-2147483643 Window
-2147483642 Window frame
-2147483641 Menu Text
-2147483640 Window Text (*)
-2147483639 Title bar text
-2147483638 Active window border
-2147483637 Inactive window border
-2147483636 Application background
-2147483635 Highlight
-2147483634 Highlight Text
-2147483633 3-D face (**)
-2147483632 3-D shadow
-2147483631 Dimmed (disabled) text
-2147483630 Button Text
-2147483629 Inactive window title bar text
-2147483628 3-D highlight (***)
-2147483627 3-D dark shadow
-2147483626 3-D light
-2147483625 ToolTip Text
-2147483624 ToolTip background
-2147483621 Active window title bar color2

  * - Cor das fontes.
 ** - Detalhes no backcolor do FORM, desabilitando a caixa de texto.
*** - Texto do Label.

Ei, talvez queira a aplicação pronta. Para importar este FORM na sua aplicação e beneficiar-se da interface acima, baixe-a aqui.

Para manter as cores de todos os FORMs da sua aplicação identificados com a mesma cor do esquema de cores do Windows®, o usuário poderá ir ao Painel de Controle > Vídeo > Aparência.


Aplicável emMS Access 97, MS Access 2000, MS Access 2002, MS Access XP, MS Access 2007, MS Access 2010


TagsBernardes, VBA, Office, Access, Windows, automation, color, colors, background, text, bar, cor






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





         

diHITT - Notícias