Sostieni Excel VBA con una donazione! Con la tua donazione potrai contribuire al mantenimento del servizio.
Le donazioni sono eseguite con PayPal, il modo più facile, comodo e sicuro per pagare online.
Paypal accetta anche carta di credito o carte prepagate.

Grafico VBA

  • FILE ALLEGATI:
  • Grafico VBA (Excel 2010) di Paolo (Utente non iscritto) data: 09/01/2017 13:37:37 



    Ciao,

    ho un codice vba che mi dà un problemino.
    In pratica al premere di un tasto crea un grafico con n variabili, in cui ogni variabile fa riferimento ad un certo range.
    Nel codice VBA ho usato ActiveChart.SeriesCollection(i).Name, ActiveChart.SeriesCollection(i).Values, ActiveChart.SeriesCollection(i).XValues. Il punto è che per i valori nell'asse delle x e delle y funziona tutto, nel senso che poi aprendo il grafico effettivamente fa riferimento al range desiderato: la stessa cosa però non funziona per il titolo della serie, nel senso che non inserisce nessuna formula, e non me ne capacito. Io ho bisogno che il titolo della serie faccia riferimento alla cella che viene evidenziata.

    Allego il codice, spero che sia abbastanza chiaro il problema.
     
    Application.ScreenUpdating = False
    Dim cht As Object, i, x, n As Integer
    Set cht = ActiveSheet.Shapes.AddChart
    
    cht.Select
    For i = 1 To 5
    
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(i).Name = Range(Cells(ActiveCell.Row + 16, ActiveCell.Column + 2 * x), Cells(ActiveCell.Row + 16, ActiveCell.Column + 2 * x))
    ActiveChart.SeriesCollection(i).Values = Range(Cells(ActiveCell.Row + 17, ActiveCell.Column + 2 * x + 1), Cells(ActiveCell.Row + 40, ActiveCell.Column + 2 * x + 1))
    ActiveChart.SeriesCollection(i).XValues = Range(Cells(ActiveCell.Row + 17, ActiveCell.Column + 2 * x), Cells(ActiveCell.Row + 40, ActiveCell.Column + 2 * x))
    Cells(ActiveCell.Row + 16, ActiveCell.Column + 2 * x).Interior.Color = RGB(220, 230, 241)
    x = x + 1
    Next
    
    cht.Chart.ChartType = xlLine
    ActiveChart.Parent.Cut
    ActiveSheet.Paste
    Application.ScreenUpdating = True
  • di patel (Utente esperto) data: 09/01/2017 14:53:53 



    allega il file
  • di Paolo (Utente non iscritto) data: 09/01/2017 15:43:44 



    Fatto
  • di Marius44 (Utente esperto) data: 09/01/2017 16:11:24 



    Ciao Paolo
    ma nel tuo codice non c'è nulla che indichi a VBA di inserire un titolo.
    Prova a dare uno sguardo a questo indirizzo
    " h t t p://ennius.altervista.org/vba/vba93.php "

    Ciao,
    Mario
  • di Paolo Grigna (Utente non iscritto) data: 09/01/2017 16:29:38 



    Ciao

    intanto grazie per la risposta: a me non interessa il titolo al grafico, voglio che il nome della serie faccia riferimento ad una cella, in modo tale che scrivendo nella cella si possa cambiare. Purtroppo nel link che mi hai inviato non risolve il problema perché dà nomi standard alle serie.
     
    ActiveChart.SeriesCollection(i).Name = Range(Cells(ActiveCell.Row + 16, ActiveCell.Column + 2 * x), Cells(ActiveCell.Row + 16, ActiveCell.Column + 2 * x))
  • di Paolo (Utente non iscritto) data: 09/01/2017 16:47:00 



    Scusate ho risolto. Se a qualcuno servirà in futuro la soluzione consiste nel fatto che per quello specifico campo bisogna inserire la formula... quindi l'ho risolta così
     
    ActiveChart.SeriesCollection(i).Name = "='" & ActiveSheet.Name & "'!" & Range(Cells(ActiveCell.Row + 16, ActiveCell.Column + 2 * x), Cells(ActiveCell.Row + 16, ActiveCell.Column + 2 * x)).Address
  • torna su

Sostieni Excel VBA con una donazione! Con la tua donazione potrai contribuire al mantenimento del servizio.
Le donazioni sono eseguite con PayPal, il modo più facile, comodo e sicuro per pagare online.
Paypal accetta anche carta di credito o carte prepagate.