MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Gráfico com eixo vertical mal escalonado.

    Compartilhe

    DARTH
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5
    Registrado : 07/12/2013

    [Resolvido]Gráfico com eixo vertical mal escalonado.

    Mensagem  DARTH em Qua 19 Fev 2014, 17:36

    Amigos.
    Deparo-me com um problema num gráfico e preciso de ajuda para o resolver.

    Sei que o forum é mais dedicado ao Access, mas por certo os excelentes profissionais que aqui dedicam o seu tempo, sabem como lidar com VBA Excell.

    O problema:
    No Userform1tenho 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:
    Código:

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

    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.
    Question M.A.

      Data/hora atual: Sab 10 Dez 2016, 12:39