manuel antonio Posted February 19, 2014 at 12:04 AM Report #545755 Posted February 19, 2014 at 12:04 AM (edited) Amigos. Deparo-me com um problema num gráfico e preciso de ajuda para o resolver. O problema: No Userform1, tenho um Multipage, contendo um dos separadores, 6 Checkbox em que cada uma seleciona um determinado tipo de dados. Selecionando a Checkbox 1, os dados são exibidos por sexo, em labels num outro separador do mesmo Multipage e transpostos para a folha 7 do livro. Nas celulas A2 até A19, os escalões etários, nas células B2 a B19 o nº de elementos masculinos e nas céculas C2 a C13 os elementos femininos. No separador do multipage que exibe estes dados, existe uma checkbox que ao ser selecionada, abre o Userform_gráfico e elabora o gráfico desejado com base na seleção A1:C19. Até aqui, tudo bem, os gráficos são elaborados e apresentados. A rotina que envia os dados das labels para a folha são iguais (exceto o nome das varáveis) e a rotina que elabora o gráfico é sempre a mesma e utiliza os dados que são gravados na folha. Acontece que se selecionar a checkbox2, o eixo vertical do lado esquerdo, aparece com as divisões corretamente escalonadas (0, 1, 2, 3, 4, 5, 6, etc.). No entanto, e a rotina é a mesma, se selecionar a checkbox1, as divisões do eixo vertical, aparecem desta forma (0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, etc.). Se selecionar a checkbox 6, o eixo vertical aparece assim dividido (0,0,0,1,1,1,1,1,2,2,2,2, etc.). A rotina, que se encontra no evento Initialize do Userform_gráfico, para elaborar o gráfico pretendido é a seguinte: If UserForm_RegistoConsultas.CheckBox22.Value = True Then Dim wksht As Excel.Worksheet Dim COLUNAdupla As Excel.ChartObject Set wksht = ThisWorkbook.Sheets("Folha7") Set COLUNAdupla = wksht.ChartObjects.Add(170, 20, 600, 360) '-------------- CRIAR GRÁFICO With COLUNAdupla.Chart .ChartType = xl3DColumnClustered .PlotArea.Select .ChartArea.Select .SetSourceData wksht.Range("A1:C19"), PlotBy:=xlColumns .HasTitle = True .ChartTitle.Characters.Text = "UTENTES OBSERVADOS EM " & wksht.Range("F1") .SeriesCollection(1).ApplyDataLabels Type:=xlValue .SeriesCollection(1).DataLabels.Select ActiveChart.ChartGroups(1).GapWidth = 15 Selection.Format.TextFrame2.TextRange.Font.Size = 12 Selection.Format.TextFrame2.TextRange.Font.Bold = msoTrue Selection.Format.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(255, 0, 0) .SeriesCollection(2).ApplyDataLabels Type:=xlValue .SeriesCollection(2).DataLabels.Select Selection.Format.TextFrame2.TextRange.Font.Size = 12 Selection.Format.TextFrame2.TextRange.Font.Bold = msoTrue Selection.Format.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(0, 176, 80) .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Font.Size = 12 .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "ESCALÃO ETÁRIO" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Font.Size = 12 .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "NÚMERO DE UTENTES" '----- FAZ RODAR O GRÁFICO SOBRE os EIXOS ----- wksht.Shapes(COLUNAdupla.Name).Chart.ChartArea.Format.ThreeD.RotationX = -5 wksht.Shapes(COLUNAdupla.Name).Chart.ChartArea.Format.ThreeD.RotationY = -260 End With Dim GrCOLdupla As String ActiveChart.Parent.Width = 600 ActiveChart.Parent.Height = 360 On Error Resume Next '---------------------------------------------------exporta a imagem do gráfico para a pasta GrCOLdupla = ThisWorkbook.Path & "\GrCOLUNAdupla.JPEG" ActiveChart.Export Filename:=GrCOLdupla, filtername:="JPEG" '--------------------------------------------------------------------------carrega grágico Image1.Picture = LoadPicture(GrCOLdupla) '-------------------------------------------------elimina o gráfico criado na folha COLUNAdupla.Delete End If End Sub Ajudem-me a resolver este problema. Se necessitarem da rotina que trata e transpõe os dados posso colá-la também. Só não colo já para que o tópico não fique demasiado extenso. Grato. M.A. Edited February 22, 2014 at 12:04 AM by manuel antonio
manuel antonio Posted February 22, 2014 at 07:04 PM Author Report #546177 Posted February 22, 2014 at 07:04 PM Para o caso de alguém se deparar com este problema, a solução é deveras simples. Depois de ter ficado com a cabeça em PAPas, descobri que antes de os dados serem transpostos para a folha de cálculo, o range que os vai receber, deve ser formatado para "General". Depois ... tudo rola sobre rodas. M. A.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now