Olá pessoal estou com uma dúvida cruel. Preciso fazer um gráfico de pizza através do vba, mas existe alguns limitadores. Na tabela de dados, o gráfico é feito apenas depois de filtrar a tabela. E esses valores mudam de acordo com a vontade do usuário. Para resolver esse problema de áreas variáveis eu imaginei que nomear as áreas cada vez que o usuário escolhe uma referência diferente iria resolver o meu problema, porém quando executo o comando ele não cria o gráfico. Já procurei questões semelhantes mas não encontrei. Abaixo segue o código do comando, a planilha eu não anexei pq o site está dando problema.
Private Sub CMDPROCESSARGRAFICOCONTA_Click()
Dim DATEI As Double
Dim DATEF As Double
DATEI = DTINICIALGRAFICOCONTA.Value
DATEF = DTFINALGRAFICOCONTA.Value
If OPTPAGARGRAFICOCONTA.Value = True Then
If ActiveSheet.FilterMode Then
ActiveSheet.ShowAllData
End If
Sheets("FLUXO").Select
Range("B3").Select
Selection.AutoFilter
ActiveSheet.Range("$A$3:$G$100").AutoFilter Field:=2, Criteria1:=">=" & CLng(CDate(DATEI)), Operator:=xlAnd, Criteria1:="<=" & CLng(CDate(DATEF))
ActiveSheet.Range("$A$3:$G$100").AutoFilter Field:=6, Criteria1:="EM ABERTO"
Range("E4").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, "E4").Name = "VALOR"
Range("G4").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, "G4").Name = "NOME"
Sheets("PLAN2").Select
Range("A1").Select
ActiveSheet.Shapes.AddChart.Select
With ActiveChart
.ChartType = xlPie
.SeriesCollection(1).XValues = Sheets("PLAN1").Range("NOME")
.SeriesCollection(1).Values = Sheets("PLAN1").Range("VALOR")
End With
Selection.ShowValue = True
Range("R12").Select
Else
If ActiveSheet.FilterMode Then
ActiveSheet.ShowAllData
End If
Sheets("PLAN1").Select
Range("B3").Select
Selection.AutoFilter
ActiveSheet.Range("$A$3:$G$100").AutoFilter Field:=2, Criteria1:=">=" & CLng(CDate(DATEI)), Operator:=xlAnd, Criteria1:="<=" & CLng(CDate(DATEF))
ActiveSheet.Range("$A$3:$G$100").AutoFilter Field:=6, Criteria1:="FECHADO"
Range("E4").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, "E4").Name = "VALOR"
Range("G4").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, "G4").Name = "NOME"
Sheets("PLAN2").Select
Range("A1").Select
ActiveSheet.Shapes.AddChart.Select
With ActiveChart
.ChartType = xlPie
.SeriesCollection(1).XValues = Sheets("PLAN1").Range("NOME")
.SeriesCollection(1).Values = Sheets("PLAN1").Range("VALOR")
End With
Selection.ShowValue = True
Range("R12").Select
End If
End Sub
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 12/02/2012 4:45 pm