Ir para conteúdo
Fórum Script Brasil
  • 0

seleção de gráfico na planilha


Jose Carlos Ferreira

Pergunta

Boa noite,

Estou com o seguinte problema, tengo um planilha só de gráficos e para chamar os gráficos.

Tenho um form e nele contem  12 optiumButton quer cada uma representa um mês.

Tenho um Botão “MOSTRAR” para mostrar o gráfico do mês correspondente

Tenho um image1 para mostrar o gráfico do mês escolhido.

No botão MOSTRA o seguinte código que chama o mês correspondente.

If OptionButton3 = True Then                 '   janeiro

   strNomeArquivo = "E:\Controle Glicose\grafico3.gif"

   strArquivoExiste = Dir(strNomeArquivo)

   If strArquivoExiste = "" Then

    Else

        Kill "E:\Controle Glicose\grafico3.gif"

    End If

   Call carrega_grmar

End If

 

Na rotina Carrega_grmar o código

On Error GoTo erro

Planilha4.Activate     ‘ planilha que se chama “ gráficos”

Dim pastanome As String

Plan = Planilha4.Name    ‘ tem o nome da planilha “gráficos”

Set currentchart = Sheets(Plan).ChartObjects(3).Chart   ‘ para pegar o gráfico de março

pastanome = ThisWorkbook.Path & Application.PathSeparator & "grafico3.gif"

Currentchart.Export Filename:=pastanome, filtername:="gif"

Image1.Picture = LoadPicture(pastanome)

Planilha4.Activate

Exit Sub

erro:

MsgBox "ERROR", vbCritical, "ERROR"

O problema é que tem vez que funciona e tem fez que não, ele se perde no índice do gráfico e mostra outro mês.

Cada gráfico esta com seu mes, eu selecionei o gráfico e fui colocando o numero do mês que corresponde.

Selecionei o gráfico de janeiro e coloquei o nome de grafico1 de janeiro, grafico2 de fevereiro e assim sucessivamente nos 12 gráficos.

Nessa rotina acima ele mostra o gráfico de Fevereiro e n]ao o de março, e tem vez que não encontra o gráfico na planilha e da o erro de inexistência do gráfico.

alguém tem a ideia o porque isso acontece? Alguém pode me ajudar.

Utilizo o Office 365 original  com w11 original atualizado.

Desde já agradeço.

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Não sei se isso vai ajudar, mas eu descobri que fiz uma enorme confusão entre imagem e gráfico, o Copilot me ensinou a criar um gráfico. Primeiro criei uma planilha chamada gráficos, na coluna A1 coloquei Ano, e abaixo dela coloquei 20, 21, 22, 23, 24, 25; na coluna B1 coloquei Popularidade, e abaixo dela coloquei 5, 4, 3, 2, 1, 0.

Pedi para o Copilot criar um código VBA (no ambiente da planilha gráficos) e em seguida salvar o arquivo. Isso está longe de resolver o seu problema, mas acredito que ele pode ajudar a conhecer melhor o VBA:

Sub CriarEGerarGrafico()

    Dim ws As Worksheet
    Dim grafico As ChartObject
    Dim pastanome As String
    Dim currentchart As Chart
    
    ' Define a planilha onde os dados estão localizados
    Set ws = Worksheets("gráficos")
    
    ' Verifica se já existe um gráfico na planilha e o remove
    For Each grafico In ws.ChartObjects
        grafico.Delete
    Next grafico
    
    ' Adiciona um novo gráfico
    Set grafico = ws.ChartObjects.Add(Left:=100, Width:=375, Top:=50, Height:=225)
    
    ' Define a origem dos dados para o gráfico
    With grafico.Chart
        .SetSourceData Source:=ws.Range("A1:B6")
        .ChartType = xlLineMarkers ' Define o tipo de gráfico como linha com marcadores
        
        ' Define os títulos do gráfico e dos eixos
        .HasTitle = True
        .ChartTitle.Text = "Popularidade ao Longo dos Anos"
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Text = "Ano"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Text = "Popularidade"
    End With
    
    ' Salva o gráfico como imagem no mesmo diretório da pasta de trabalho
    Set currentchart = grafico.Chart
    pastanome = ThisWorkbook.Path & Application.PathSeparator & "grafico1.gif"
    currentchart.Export Filename:=pastanome, filtername:="gif"
    
    MsgBox "Gráfico criado e salvo com sucesso em: " & pastanome

End Sub

 

Captura de tela 2025-02-25 221800.png

Captura de tela 2025-02-25 222532.png

Link para o comentário
Compartilhar em outros sites

  • 0

Frank, funcionou a criação do grafico, mas quando levo pra planilha de gráficos e chamo para mostrar o grafico ele não funciona. O problema e ue ele se perde quando direciono para a planilha de grafico e chamo o gafico correspondente. ele mostra outro grafico. ex. chamo para mostrar o grafico de janeiro(grafico1) e ele mostra o de março(grafico3). E uma coisa intermitente, tem hora que funciona e tem hora que não. Não sei porque. Mas mesmo assim OBRIGADO>

Link para o comentário
Compartilhar em outros sites

  • 0
Em 26/02/2025 em 11:38, Jose Carlos Ferreira disse:

Frank, funcionou a criação do grafico, mas quando levo pra planilha de gráficos e chamo para mostrar o grafico ele não funciona. O problema e ue ele se perde quando direciono para a planilha de grafico e chamo o gafico correspondente. ele mostra outro grafico. ex. chamo para mostrar o grafico de janeiro(grafico1) e ele mostra o de março(grafico3). E uma coisa intermitente, tem hora que funciona e tem hora que não. Não sei porque. Mas mesmo assim OBRIGADO>

Mais uma tentativa:
Criei um gráfico e copiei três vezes o mesmo gráfico; criei um userform,um ListBox com nomem lstCharts e um botão com nome cmdApplyBorder, e o código no ambiente do UserForm ficou assim:
 

Private Sub UserForm_Initialize()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("gráficos")
    
    Dim cht As ChartObject
    For Each cht In ws.ChartObjects
        lstCharts.AddItem cht.Name
    Next cht
    
    ' Define o tamanho da fonte da ListBox
    lstCharts.Font.Size = 14
End Sub

Private Sub cmdApplyBorder_Click()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("gráficos")
    
    Dim selectedChart As String
    selectedChart = lstCharts.Value
    
    If selectedChart <> "" Then
        Dim cht As ChartObject
        
        ' Define a borda preta fina para todos os gráficos
        For Each cht In ws.ChartObjects
            cht.Border.Color = RGB(0, 0, 0)
            cht.Border.Weight = xlThin
        Next cht
        
        ' Desenha a borda vermelha mais grossa no gráfico correspondente
        Set cht = ws.ChartObjects(selectedChart)
        cht.Border.Color = RGB(255, 0, 0)
        cht.Border.Weight = xlThick
        
        ' Fecha o UserForm
        Unload Me
    Else
        MsgBox "Por favor, selecione um gráfico.", vbExclamation
    End If
End Sub

No ambiente de código da planilha gráfico, criei o seguinte comando:

Sub ShowUserForm()
    UserForm1.Show
End Sub

 

Captura de tela 2025-02-27 223208.png

Captura de tela 2025-02-27 223250.png

Link para o comentário
Compartilhar em outros sites

  • 0

Boa tarde Frank.

Faz o seguinte teste.

crie uma planilha  de dados e gere 4 gráficos como você fez

mova os seus gráficos para a planiha gráficos

crie uma planilha e coloque 4 botoes que cada um vai chamar um grafico

nessa planilha crie o objetro image que a cada click no botão vai mostrar o grafico do botão correspondente

e vamos ver se funciona. vou te passar o codigo para você colocar no botão que vai  mostrar o grafico;

coloque no seu botão1 esse codigo  e nos outros mude somente o nome do grafico .

'On Error GoTo erro
'On Error Resume Next

Dim pastanome As String
Dim plan As String
Planilha4.Activate      ' ativa a planilha de nome gráficos   a sua planilha pode ser outra planilha  
plan = Planilha4.Name   ' pega o nome da planilha4 que é "gráficos"

Me.Repaint

Set nomecharts = Sheets(plan).ChartObjects("Gráfico 1").Chart             ' pega a planilha e o grafico correspondente nesse caso janeiro grafico 1

pastanome = ThisWorkbook.Path & Application.PathSeparator & "grafico.gif"  ' pega na pasta(caminho) o grafico 1 como grafico.gif
nomecharts.Export Filename:=pastanome, filtername:="GIF"                  ' exporta o grafico.gif

Image1.Picture = LoadPicture("E:\Controle Glicose\grafico.gif")             ' coloca o grafico exportado na image1 no end selecionado

Planilha4.Activate
Me.Repaint

Exit Sub
erro:
MsgBox "ERROR", vbCritical, "ERROR"

copie essa mesma rotina para os outros botoes mudando o nome do grafico no set e troque o os nomes da planilha4 pela a da sua planilha. 

o nome do grafico e criado automaticamente quando movemos para outra planilha seleciona o grafico e aparece o nome.

vamos ver se funciona, pra mim tem hora que funciona tem hora que mostra outro grafico.

mas desde já´ te agradeço pela cooperação e ajuda;

No seu exemplo você gera o grafico no mesmo lugar dos dados, no meu eu gero no mesmo lugar , mas movo eles para a planilha grafico e acesso essa planilha para mostrar o grafico no image1.

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,4k
    • Posts
      652,2k
×
×
  • Criar Novo...