In realta' il problema deriva dalla dinamicita' del grafico (cioe' dal fatto che si aggiungono punti su una serie di dati).
Infatti excel consente di assegnare una etichetta a un solo punto di una serie, con una procedura da certosino:
-selezioni la curva della serie
-vai sul punto che vuoi modificare, lo selezioni; il formato del cursore cambia in trattino verticale con frecce su/giu (come <--> ma verticale)
-tasto destr, scegli Formato dati, poi Tab "Etichette dati", spunti quello che vuoi
-ripeti su altre serie e altri punti
Queste sono configurazioni indicizzate, cioe' valgono per la serie N e il punto M; quindi aggiungendo un altro punto al grafico queste impostazioni rimangono.
Per fare quello che chiedevi su tutti i grafici del foglio, io userei questa macro:
- Codice: Seleziona tutto
Sub LastSer()
'
Dim pts As Points
Dim CSeries As Integer
Dim CChart As Integer
'Numero di grafici
CChart = ActiveSheet.ChartObjects.Count
MsgBox ("Ci sono " & CChart & " Grafici")
For CC = 1 To CChart
'Azzera labels
ActiveSheet.ChartObjects(CC).Activate
ActiveChart.ChartArea.Select
ActiveChart.ApplyDataLabels AutoText:=True, LegendKey:=False, _
HasLeaderLines:=False, ShowSeriesName:=False, ShowCategoryName:=False, _
ShowValue:=False, ShowPercentage:=False, ShowBubbleSize:=False
'Numero di serie:
CSeries = ActiveChart.SeriesCollection.Count
'MsgBox ("Ci sono " & CSeries & " serie")
'===Assegna label di serie all' ultimo Punto di ogni serie
For I = 1 To CSeries
Set pts = ActiveSheet.ChartObjects(CC).Chart. _
SeriesCollection(I).Points
PC = pts.Count
pts(PC).ApplyDataLabels Type:=xlDataLabelsShowNone, LegendKey:=False, ShowSeriesName:=True
'==Eventuale formattazione del Carattere del Nome Serie
'== modificare, commentare o scommentare secondo i bisogni
ActiveChart.SeriesCollection(I).DataLabels.Select
' Selection.AutoScaleFont = True
With Selection.Font
.Name = "Arial"
.Size = 8
' .Underline = xlUnderlineStyleSingle
' .ColorIndex = xlAutomatic
' .Background = xlAutomatic
End With
'===
Gnex:
Next I 'Ripeti per Serie
Next CC 'Ripeti per Grafico
ActiveSheet.ChartObjects(1).Activate
ActiveChart.ChartArea.Select
ActiveSheet.Select
End Sub
Ci sono molte righe che possono essere eliminate, se non evono essere utilizzate.
Pero' non mi sembra ottimizzata; prenderei quindi volentieri visione del tuo codice.
Ciao,