MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

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
    avatar
    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: Ter 24 Out 2017, 08:39