risolti i problemi dei post precedenti me ne sorge un'altro, si crea uno sfarfallio credo dovuto al fatto che a causa della funzione ChartSpace1(I).Clear si cancella tutto il grafico comprese le impostazioni di formattazione del componente (colori sfondo, line). Le impostazioni vengono ripristinate dopo aver caricato le matrici dati. In alcuni momenti essendoci più di un grafico si crea un ritardo e pertanto si vede il chartspace nudo di colore bianco, questo crea una specie di sfarfallio tra componente nudo e formattato di colori eccetera.
Pensavo di poter inserire un funzione che disabilitasse il controllo prima di eseguire tutto il codice e di riabilitarlo alla fine facendogli poi fare un refresh, ma non lo trovo, mi potete aiutare ?
Grazie
inserisco di seguito codice magari puo essere di aiuto a chi vuole utilizzare il controllo chartspace
Public Sub GRAFICI()
Set FOGLIOEXCEL = APPEXCEL.ActiveWorkbook.Worksheets("DDE")
With FOGLIOEXCEL
'.........................................................................
'CARICA POSIZIONI DEI DATI PER CREARE LA HOME PAGE
For I = 0 To 5
T = I + 1
POSFOGLIO(I) = .Cells(T * 3 + 108,
POSBOOK(I) = .Cells(T * 3 + 109,
Next I
End With
'............................................................................
For I = 0 To 5
If POSFOGLIO(I) <> "" Then
Set FOGLIOEXCEL = APPEXCEL.ActiveWorkbook.Worksheets(POSFOGLIO(I))
With FOGLIOEXCEL
'...............................................................................
ChartSpace1(I).Clear 'PULISCE IL VECCHIO
Set ChartObj = ChartSpace1(I)
Set ChartConsts = ChartObj.Constants
Set NEWCHART = ChartObj.Charts.Add
'..................................................................
'Settiamo il tipo di grafico va da 0 a 65 circa con dei buchi
NEWCHART.Type = 6
'........................................................................
'CARICA DATI
Dim S1(39), S2(39), S3(39), S4(39), S5(39) As Variant
For Z = 0 To 39
S1(Z) = .Cells(Z + 5, 6) 'ASSE X
S2(Z) = .Cells(Z + 5, 170) 'DATI PO SCADENZA
S3(Z) = .Cells(Z + 49, 170) 'DATI PO ATN
S4(Z) = .Cells(Z + 5, 168)
S5(Z) = 0
Next Z
'.............................................................................
'Creazione delle due serie
Set Serie = NEWCHART.SeriesCollection.Add 'Prima colonna
Set Serie1 = NEWCHART.SeriesCollection.Add 'Seconda colonna
Set Serie2 = NEWCHART.SeriesCollection.Add
Set Serie3 = NEWCHART.SeriesCollection.Add '
Set Serie4 = NEWCHART.SeriesCollection.Add '
Serie.SetData ChartConsts.chDimCategories, ChartConsts.chDataLiteral, S1
Serie1.SetData ChartConsts.chDimValues, ChartConsts.chDataLiteral, S2
Serie2.SetData ChartConsts.chDimValues, ChartConsts.chDataLiteral, S3
Serie3.SetData ChartConsts.chDimValues, ChartConsts.chDataLiteral, S4
Serie4.SetData ChartConsts.chDimValues, ChartConsts.chDataLiteral, S5
'..............................................................
'ChartSpace1(I).Visible = True
'Setto il colore di sfondo
NEWCHART.PlotArea.Interior.Color = &H404040 'COLORA SFONDO INTERNO
NEWCHART.Border.Color = RGB(255, 255, 255) 'COLORA BORDO
NEWCHART.Interior.Color = &H404040 'messo dopo colora bordo colora l'interno del bordo
NEWCHART.Border.Weight = 1 'SPESSORE BORDO
'...................................................................................
'SCALA Y
MAXSCALA = .Range("B76")
MINSCALA = .Range("B74")
MajorUnit = .Range("B80")
Set oAxis1 = NEWCHART.Axes(ChartConsts.chAxisPositionLeft) 'SCALA Y
oAxis1.Scaling.Maximum = MAXSCALA
oAxis1.Scaling.Minimum = MINSCALA '-10000
oAxis1.MajorUnit = MajorUnit 'UNITA' DIVISIONE
If .Range("B12") = True Then
oAxis1.NumberFormat = "$ #,##0;[RED]$ -#,##0" 'FORMATTA TIPO DI DATO ASSE Y
Else
oAxis1.NumberFormat = "Pu #,##0;[RED]Pu -#,##0"
End If
oAxis1.Font.Name = "arial" 'tipo stile colore carattere asse y
oAxis1.Font.Bold = False
oAxis1.Font.Size = 7
oAxis1.Font.Color = &HE0E0E0
oAxis1.HasMajorGridlines = True 'VISUALIZZA GRIGLIA ASSE Y
oAxis1.MajorGridlines.Line.Color = RGB(86, 89, 89) 'COLORA LINEE
oAxis1.MajorGridlines.Line.Weight = 1 'spessore
'........................................................................
'ASSE X
Set oAxis2 = NEWCHART.Axes(ChartConsts.chAxisPositionBottom) 'SCALA X
oAxis2.MajorUnit = 4
oAxis2.TickLabelSpacing = 4
oAxis2.HasMajorGridlines = True
oAxis2.MajorGridlines.Line.Color = RGB(86, 89, 89) 'COLORA LINEE
oAxis2.Font.Name = "arial" 'tipo stile colore carattere asse y
oAxis2.Font.Bold = False
oAxis2.Font.Size = 7
oAxis2.Font.Color = &HE0E0E0
'................................................................................................
'COLORE LINEE
If POSBOOK(I) = 1 Then
NEWCHART.SeriesCollection(1).Line.Color = RGB(117, 170, 219) 'PO SCADENZA
NEWCHART.SeriesCollection(2).Line.Color = RGB(117, 170, 219) 'CURVA PREZZI
Else
NEWCHART.SeriesCollection(1).Line.Color = RGB(242, 132, 17) 'PO SCADENZA
NEWCHART.SeriesCollection(2).Line.Color = RGB(242, 132, 17) 'CURVA PREZZI
End If
NEWCHART.SeriesCollection(3).Line.Color = &H404040 'VALORE ATN (DEVE ESSERE TRASPARENTE)
NEWCHART.SeriesCollection(4).Line.Color = RGB(130, 127, 119) 'COLORA SERIE 4 LINEA ZERO
'................................................................................................
'SPESSORE LINEA
NEWCHART.SeriesCollection(1).Line.Weight = 2
NEWCHART.SeriesCollection(3).Line.Weight = 0
NEWCHART.SeriesCollection(4).Line.Weight = 2
'................................................................................................
'TIPO LINEA
NEWCHART.SeriesCollection(2).Line.DashStyle = VtPenStyleDitted
'................................................................................................
'MARCATORE
NEWCHART.SeriesCollection(3).Marker.Style = chMarkerStylePlus
NEWCHART.SeriesCollection(3).Marker.Size = 10
If POSBOOK(I) = 1 Then
NEWCHART.SeriesCollection(3).Interior.Color = RGB(117, 170, 219)
Else
NEWCHART.SeriesCollection(3).Interior.Color = RGB(242, 132, 17)
End If
'................................................................................................
End With
End If
Next I
End Sub