Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

chartspace e sfarfallio

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

chartspace e sfarfallio

Postdi piter123 » 07/06/08 09:05

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, 8)
POSBOOK(I) = .Cells(T * 3 + 109, 8)
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
piter123
Utente Senior
 
Post: 190
Iscritto il: 07/11/07 18:31

Sponsor
 

Re: chartspace e sfarfallio

Postdi Anthony47 » 07/06/08 22:54

Intanto grazie per aggiornarci con le soluzioni che trovi.

Per lo sfarfallamento, puoi usare
Codice: Seleziona tutto
Application.ScreenUpdating = False
all' inizio, e poi
Codice: Seleziona tutto
Application.ScreenUpdating = True
alla fine.
In questo modo lo schermo viene solo aggiornato dopo l' Application.ScreenUpdating = True; ovviamente puoi inserire Application.ScreenUpdating anche in posizioni diverse da inizio/fine, se ti interessa visualizzare l' avanzamento del "lavoro" della macro.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: chartspace e sfarfallio

Postdi piter123 » 12/06/08 13:54

Ciao, conosco qyesto comando ma non sapevo si potesse usare anche con vb6.
Ho provato a inserirlo ma continua lo stesso lo sfarfallio.
piter123
Utente Senior
 
Post: 190
Iscritto il: 07/11/07 18:31


Torna a Applicazioni Office Windows


Topic correlati a "chartspace e sfarfallio":

sfarfallio
Autore: lodoping58
Forum: Reti, ADSL e wireless
Risposte: 0

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti