Notifications
Clear all

COMO CONTROLAR POSICIONAMENTO DE GRÁFICOS NA PLANILHA ?

8 Posts
2 Usuários
0 Reactions
1,065 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Estou precisando ter controle sobre o gráfico, passando posicionamento, nome e tamanho, como por exemplo

posicionamento = "F4:F4"
nome = "Nome do funcionário"
Largura = 150
Comprimento = 350

Tem como fazer este tipo de configuração ?

Exemplo abaixo

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 20/09/2016 10:46 am
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Bom dia, CyberLacs!

Uma ideia:

Sub Principal()
  MoveGrafico objGraf:=ActiveSheet.ChartObjects(1), celDestinoGraf:=[F4], _
              altura:=150, largura:=350, celFuncionario:=[B2]
  MoveGrafico objGraf:=ActiveSheet.ChartObjects(2), celDestinoGraf:=[F34], _
              altura:=150, largura:=350, celFuncionario:=[B33]
End Sub

Sub MoveGrafico(objGraf As ChartObject, celDestinoGraf As Range, _
                altura As Single, largura As Single, celFuncionario As Range)
  objGraf.Top = celDestinoGraf.Top
  objGraf.Left = celDestinoGraf.Left
  objGraf.Height = altura
  objGraf.Width = largura
  objGraf.Chart.ChartTitle.Text = celFuncionario.Text
End Sub

 
Postado : 21/09/2016 5:42 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Edson Br tudo bem, obrigado pela dica.

Mas analisando o seu código, não vi a possibilidade, de ter muitos funcionários ( 3, 5, 10, 30, 100 etc ), tenho que ter o controle sobre a quantidade, isto é, não importa quantos funcionário tenha o gráfico estará na frente de cada um.

Então resumindo, tenho que a cada funcionário ter as horas contabilizadas juntamente com o seus gráfico, o que estou tendo problemas é a cada funcionário posicionar o gráficos na frente de suas informações.

Fico no aguardo

Obrigado

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 23/09/2016 11:24 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Amigo Edson Br, estou testando a sua ideia, mas ela esta dando erro, o que será que esta errado ?

Obrigado pela ajuda
Fico no aguardo

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 24/09/2016 10:31 am
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Cyberlacs, boa tarde.

Fica mais difícil analisar um problema assim quando só são apresentados alguns fragmentos do sistema que vc está usando. Para testar a rotina que te passei, me baseei somente na imagem que vc postou no início do tópico e aqui funcionou satisfatoriamente.

Na verdade minha intenção foi somente apontar uma metodologia que vc poderia seguir, ou seja, que objetos referenciar, etc, em função de sua necessidade original, que, pela sua descrição , era...

...Estou precisando ter controle sobre o gráfico, passando posicionamento, nome e tamanho...

Para uma análise mais apurada do que possa estar acontecendo, o ideal seria ter disponível pelo menos boa parte de sua pasta de trabalho, mesmo que com dados fictícios. Então, se puder anexá-la e descrever com detalhes exatamente o que vc espera conseguir, facilitaria enormemente.

 
Postado : 24/09/2016 1:32 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Edson Br, Eu comentei o código o máximo possível a partir da LINHA ( 93 )

A impressão do Relatório MENSAL DE HORAS TRABALHADAS começa na LINHA ( 141 )

Fico no aguardo
Obrigado

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 24/09/2016 5:14 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Edson resumindo eu quero a cada interação do Do While com ajuda de variáveis lin linRelHT que vão incrementando eu possa fazer a concatenação, veja abaixo:

Set celDestino = Range("B" & lin - linRelHT)

E com esta concatenação, Eu possa pegar o valor celDestino e passar para a função que você enviou

'MoveGrafico objGraf:=ActiveSheet.ChartObjects(1), celDestinoGraf:=[F4], altura:=150, largura:=350, celFuncionario:=[B2]

Mas esta dando erro no código que você passou.

Fico no aguardo

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 24/09/2016 5:31 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Consegui resolver, era somente isto pegar valor e ter o controle de posicionamento.

PosicaoGrafico = "F" & lin - linRelHT

            Dim rng As Range
            PosicaoGrafico = "F" & lin - linRelHT
            ColunasValorParaGrafico = "B" & lin - linRelHT & ":" & "B" & lin - 1 & "," & "D" & lin - linRelHT & ":" & "D" & lin - 1
            Set rng = Range(PosicaoGrafico) 'Area to put the chart in
            
            With Sheets("Relatório Horas Trabalhada").ChartObjects.Add _
                (left:=rng.left, width:=400, top:=rng.top, height:=200)
                .Chart.SetSourceData Source:=Sheets("Relatório Horas Trabalhada").Range(ColunasValorParaGrafico)
                .Chart.HasTitle = True
                .Chart.ChartTitle.Text = nomePlanilha
            End With

Valeu Edson Br, obrigado pela ajuda.

Tinha que ter botão para agradecer Eu mesmo kkkkkkkkkkk

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 25/09/2016 2:56 pm