Não basta ser bom, tem que ser o melhor.

Como apresentar graficos em um UserForm

21/09/2010 12:02

Bom dia galera!

Hoje vou ensinar você dar um toque digamos mais profissional na sua planilha com a ajuda do Vba.

1º passo:

Crie uma tabela no excel, faça 2 ou mais gráficos.

Renomeie a planilha para "Graficos".

2º Passo

Abra o editor do vba, ALT+F11

Insira um UserForm

Insira a ferramanta Imagem, conforme imagem abaixo:

 

Ficando da seguinte:

Insira um botão e renomei para NextButton

Insira outro botão e renomei para CloseButton

Agora Vamos trabalhar o código:

Dê um duplo click no formulário para abrir e exibir o código, vai aparecer na tela a seguite expressão:

Private Sub UserForm_Click()

End Sub

Apague e cole o código a seguir:

Dim ChartNum As Integer

Private Sub grafico_Initialize()
If ChartNum = 3 Then ChartNum = 1 Else ChartNum = ChartNum + 1
UpdateChart
End Sub


Private Sub PreviousButton_Click()
    If ChartNum = 1 Then ChartNum = 1 Else ChartNum = ChartNum - 1
    UpdateChart
End Sub


Private Sub NextButton_Click()
    If ChartNum = 3 Then ChartNum = 1 Else ChartNum = ChartNum + 1
    UpdateChart
End Sub

Private Sub CloseButton_Click()
    Unload Me
    Application.Visible = True
End Sub

Private Sub UpdateChart()
    Set CurrentChart = Sheets("Graficos").ChartObjects(ChartNum).Chart
    CurrentChart.Parent.Width = 425
    CurrentChart.Parent.Height = 180
'   Save chart as GIF
    Fname = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
    CurrentChart.Export Filename:=Fname, FilterName:="GIF"

'   Show the chart
    Image1.Picture = LoadPicture(Fname)
End Sub

 

Vamos entender o código:

Private Sub grafico_Initialize()
If ChartNum = 3 Then ChartNum = 1 Else ChartNum = ChartNum + 1
UpdateChart
End Sub

Na expressão If ChartNum = 3 vc vai mudar apenas a quantidade digamos que na planilha vc tenha 10 graficos, então altere o valor 3 para 10

 

Aqui também a mesma coisa, muda 3 para 10

Private Sub NextButton_Click()
    If ChartNum = 3 Then ChartNum = 1 Else ChartNum = ChartNum + 1
    UpdateChart
End Sub

Na expressão If ChartNum = 3 vc vai mudar apenas a quantidade digamos que na planilha vc tenha 10 graficos, então altere o valor 3 para 10

 

Agora vamos ver o tamanho d grafico:

Private Sub UpdateChart()
    Set CurrentChart = Sheets("Graficos").ChartObjects(ChartNum).Chart
    CurrentChart.Parent.Width = 425
    CurrentChart.Parent.Height = 180

'   Save chart as GIF
    Fname = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
    CurrentChart.Export Filename:=Fname, FilterName:="GIF"

'   Show the chart
    Image1.Picture = LoadPicture(Fname)
End Sub

Nas expressões CurrentChart.Parent.Width = 425 e CurrentChart.Parent.Height = 180 aqui vc muda a altura e largura da imagem dentro do form.

 Mude os valores conforme fique adequado dentro do forme, exemplo:

Aqui as expressões estam com valores alto demais para o tamanho do form, CurrentChart.Parent.Width = 500 e CurrentChart.Parent.Height = 300

 

 

Veja como ficou desformatado o grafico.

Agora a vamos ajustar os valores CurrentChart.Parent.Width = 425 e CurrentChart.Parent.Height = 180

 

Agora sim ficou perfeito.

 

Att,