Allineamento etichetta

Anonimo
2013-01-10T17:16:22+00:00

Salve a tutti. Sto provando a modificare dei grafici in excel con l'utilizzo di macro. Il problema con cui mi sto confrontando è che sui grafici che vengono aggiornati ho automatizzato l'inserimento di una etichetta con il valore relativo all'ultimo punto sulla linea (per spiegarmi meglio ho dei grafici che riportano il dato del mercato in media mobile 12 mesi per ogni mese dell'anno). Il tutto funziona perfettamente. Però una miglioria che vorrei apportare riguarda il posizionamento dell'etichetta che spesso si sovrappone sulla linea in prossimità della fine dell'anno. L'idea sarebbe di intercettare il valore della posizione dell'ultimo valore sulla linea nel grafico, aumentare questo valore ed assegnarlo alla posizione verticale dell'etichetta (quello orizzontale resterebbe invariato). Qualcuno conosce i metodi per intercettare i valori delle posizioni? Grazie.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2013-01-17T16:58:54+00:00

Con qualche tentativo sono riuscito nell'intento.

Utilizzando le proprietà dell'etichetta ho impostato un posizionamento "dinamico" della stessa in prossimità dell'avvicinamento al bordo destro dei grafici. Di seguito il "pezzo" di codice che esegue il posizionamento. Grazie.

...........

       x = 33

    ElseIf Month(Date) = 11 Then

        x = 34

    ElseIf Month(Date) = 12 Then

        x = 35

    ElseIf Month(Date) = 1 Then

        x = 36

    End If

    Sheets("Grafico").Select

    ActiveSheet.ChartObjects("Grafico 7").Activate

    ActiveChart.SeriesCollection(2).Select

    ActiveChart.SeriesCollection(2).Points(x).Select

    ActiveChart.SeriesCollection(2).Points(x).ApplyDataLabels Type:= _

        xlDataLabelsShowValue, AutoText:=True, LegendKey:=False

    ActiveChart.SeriesCollection(2).DataLabels.Select

    Application.Run "personal.xlsb!edita_etichetta1"

' Prova di allineamento della etichetta 

    ActiveChart.SeriesCollection(2).Points(x).DataLabel.Select

    a = ActiveChart.SeriesCollection(2).Points(x).Left

    b = ActiveChart.SeriesCollection(2).Points(x).Top

    If x >= 34 Then

        ActiveChart.SeriesCollection(2).Points(x).DataLabel.Select

        Selection.Left = a - 10

        Selection.Top = b - 50

    End If

........

La risposta è stata utile?

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2013-01-10T17:39:34+00:00

Ciao tos58,

se stiamo parlando dell'oggetto:

  • Class DataLabel

    Membro di Excel

considera che possiede le seguenti:

  • Property Left As Double

    Membro di Excel.DataLabel

  • Property Top As Double

    Membro di Excel.DataLabel

di lettura e scrittura.

Prova per esempio nella finestra immediata:

?application.ActiveChart.SeriesCollection(1).datalabels(1).left

(Concludi l'immissione con Invio)

Poi:

application.ActiveChart.SeriesCollection(1).datalabels(1).left= 100

(Concludi l'immissione con Invio)

Con la prima istruzione ottieni il valore di sinistra, con la seconda lo modifichi e l'effetto lo vedi subito. E` questo che ti interessa?

La risposta è stata utile?

0 commenti Nessun commento

3 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-01-18T21:08:53+00:00

    Ciao tos58,

    grazie del riscontro!

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-01-11T17:37:42+00:00

    Gentilmente, fammi capire una cosa, tos58. Tu hai fatto la prova che ti ho chiesto? Sarebbe utile per capire se stiamo parlando della stessa cosa. Grazie.

    A proposito della pubblicazione di esempi consulta Come pubblicare file ed immagini nei forum di Microsoft Answers?

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2013-01-11T17:02:46+00:00

    Volevo rispondere inserendo una videata del grafico per spiegare meglio l'obiettivo ma non trovo il modo. Praticamente sull'ultimo valore della serie del grafico "costruisco" l'etichetta che però quando arrivo a fine anno per cui la linea mi arriva al bordo dx l'etichetta si sovrappone alla linea del grafico. Se riesco a farla posizionare leggermente più in alto in modo da scoprire la linea dati sarebbe ok.

    La risposta è stata utile?

    0 commenti Nessun commento